c语言冒泡子函数,C语言冒泡法流程图

C语言的冒泡法

修改好了!!如下:

我们提供的服务有:成都网站设计、网站建设、微信公众号开发、网站优化、网站认证、加格达奇ssl等。为1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的加格达奇网站制作公司

#includestdio.h

void bubble(int a[100], int n)

{

int i=0;

int j=0;

int temp=0;

char select; //选择

printf("Please Select size b/l: \n"); //选择从大到小或者从小到大

scanf("%s",select); //运行中就是这里有错误,select没有给我一个输入就自己跳过去了,很奇怪

//修改好了,%c改为%s

switch (select)

{

case 'l': //从小到大

for (j=1; jn; ++j)

{

for (i=0; in-j; ++i)

{

if (a[i] a[i+1])

{

temp = a[i];

a[i] = a[i+1];

a[i+1] = temp;

}

}

}break;

case 'b': //从大到小

for (j=1; jn; ++j)

{

for (i=0; in-j; ++i)

{

if (a[i] a[i+1])

{

temp = a[i];

a[i] = a[i+1];

a[i+1] = temp;

}

}

}break;

default: printf("error\n");

}

for (i=0; in; ++i) //输出排列好的数组

{

printf(" %d ", a[i]);

}

printf("\n");

}

void main()

{ int n=0;

int i=0;

int a[100]={0};

printf(" Please enter the number of array :\n");

scanf("%d", n); //输入数组元素的个数

printf(" Please enter the array :\n");

for (i=0; in; ++i) //输入数组里面的各元素

{

scanf("%d", a[i]);

}

bubble(a, n);

}

用C语言编写冒泡排序,要求调用子函数,并改变原函数中数组序列。

================================================

功能:冒泡排序

输入:数组名称(也就是数组首地址)、数组中元素个数

================================================

*/

/*

====================================================

算法思想简单描述:

在要排序的一组数中,对当前还未排好序的范围内的全部数,自上

而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较

小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要

求相反时,就将它们互换。

下面是一种改进的冒泡算法,它记录了每一遍扫描后最后下沉数的

位置k,这样可以减少外层循环扫描的次数。

冒泡排序是稳定的。算法时间复杂度O(n2)--[n的平方]

=====================================================

*/

void bubble_sort(int x[], int n)

{

int j, k, h, t;

for (h=n-1; h0; h=k) /*循环到没有比较范围*/

{

for (j=0, k=0; jh; j++) /*每次预置k=0,循环扫描后更新k*/

{

if (*(x+j) *(x+j+1)) /*大的放在后面,小的放到前面*/

{

t = *(x+j);

*(x+j) = *(x+j+1);

*(x+j+1) = t; /*完成交换*/

k = j; /*保存最后下沉的位置。这样k后面的都是排序排好了的。*/

}

}

}

}

C语言简单冒泡法程序

1、打开Visual stdio软件,在空项目里新建一个c语言程序空文件:

2、弹出的窗口选择C++文件,将文件扩展名改为“.c”点击添加完成新建c文件,之后就可以编写程序了:

3、这里从数组头部开始,不断比较相邻的两个元素的大小,让较大的元素逐渐往后移动(交换两个元素的值),直到数组的末尾,经过一轮的比较,就可以找到最大的元素,并将它移动到最后一个位置,然后依次类推直到数组的最后一个数比较完,最后输出结果;

4、最后需要执行程序,按下crtl+F5弹出程序的执行结果,就可以看到排序后的结果了:

C语言冒泡法

#includeiostream

using namespace std;

void Sort(int a[],int n);

int main()

{

int i,n,a[1001];

cinn;

for(i=1;i=n;i++)

cina[i];

Sort(a,n);

for(i=1;i=n;i++)

couta[i]" ";

system("pause");

return 0;

}

void Sort(int a[],int n)

{

int i,j,x,flag;

for(i=1;i=n;i++)

{

flag=0;

for(j=1;j=n-i;j++)  

if(a[j+1]a[j])

{   

flag=1;

x=a[j];

a[j]=a[j+1];

a[j+1]=x;

}

if(flag==0)

break;      

}

}

【注意】上面那个数组下标是从1开始的,本人习惯从1开始

还有一种超好的排序方法,我一直用它:

#includeiostream

#includealgorithm

using namespace std;

int main()

{

int n,i,a[10001];

cinn;

for(i=1;i=n;i++)

cina[i];

sort(a+1,a+n+1);//默认是升序

for(i=1;i=n;i++)

couta[i]" ";

system("pause");

return 0;

}

C语言编程——冒泡排序法。要求:由主函数调用排序子函数,对n个整数进行从小到大的排序,谢了

#includestdio.h

void sort(int a[],int n)

{

int i;

int j;

for(i=1;in;i++) //n个程序 排n-1次

{

for(j=0;jn-i;j++)

{

if(a[j]a[j+1]) //从小到达,前面的比后面的大,则互换。

{

int temp = a[j];

a[j] = a[j+1];

a[j+1] = temp;

}

}

}

}

int main()

{

int a[10]={1,3,5,7,9,2,4,6,8,10};

sort(a,10);

int i;

for(i=0;i10;i++)

{

printf("%d ",a[i]);

}

getchar();

return 0;

}


名称栏目:c语言冒泡子函数,C语言冒泡法流程图
标题网址:http://scyanting.com/article/hdgecs.html