所在的位置: C++ >> C++市场 >> C语言冒泡排序法详解

C语言冒泡排序法详解

北京哪家医院能看好白癜风 https://baijiahao.baidu.com/s?id=1707672648061290025&wfr=spider&for=pc
C语言

冒泡排序冒泡排序解析冒泡排序是因为越小的元素会经由交换以升序或降序的方式慢慢浮到数列的顶端,就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名冒泡排序。题目:C语言实现从小到大对10个数进行排序,要求使用冒泡排序实现。方法一源代码演示:(第1个数依次和第2-10比较,第2个数依次和第3-10比较,第3个数依次和4-10个数比较......以此类推。当前一个数比后一个数大,则两个数互换)

#includestdio.h//头文件main()//主函数{inti,j,t;//定义整型变量intarray[10];//定义数组大小printf("请输入十个数:");//提示语句for(i=0;i10;i++)//手动往数组里输入10个数{scanf("%d,",array[i]);//注意符号}for(i=0;i9;i++)//外层循环限制{for(j=i+1;j10;j++)//内存循环,第1个数依次和2-10比较,第2个数依次和3-10比较if(array[i]array[j])//如果前一个数比后一个数大,则两个数互换{t=array[i];//把小的数赋值给前面,大的数赋值给后面array[i]=array[j];array[j]=t;}}printf("按照从小到大的顺序排序:");//提示语句for(i=0;i10;i++)//循环输出10个数{printf("%d",array[i]);}printf("\n");//换行return0;//函数返回值为0}编译运行结果如下:

请输入十个数:按照从小到大的顺序排序:以上就是很著名的“冒泡排序”,也称为“起泡排序”。方法二源代码演示:(从第一个元素开始一个一个的比较相邻的元素)

#includestdio.h//头文件intmain()//主函数{inti,j,t;//定义整型变量intarray[10];//定义数组大小printf("请输入十个数:");//提示语句for(i=0;i10;i++)//手动往数组里输入10个数{scanf("%d,",array[i]);//注意符号}for(i=0;i9;i++)//外层循环限制{for(j=0;j9-i;j++)//内存循环,相邻两个数比较if(array[j]array[j+1])//如果前一个数比后一个数大,则两个数互换{t=array[j];//把小的数赋值给前面,大的数赋值给后面array[j]=array[j+1];array[j+1]=t;}}printf("按照从小到大的顺序排序:");//提示语句for(i=0;i10;i++)//循环输出10个数{printf("%d",array[i]);}printf("\n");//换行}方法二思路原理

以升序为例

从第一个元素开始一个一个的比较相邻的元素,如果第一个比第二个大即a[1]a[2],就彼此交换。

从第一对到最后一对,对每一对相邻元素做一样的操作。此时在最后的元素应该会是最大的数,我们也称呼一遍这样的操作为一趟冒泡排序,用i来计数。

针对所有的元素重复以上的步骤,每一趟得到的最大值已放在最后,下一次操作则不需要将此最大值纳入计算。(比如在第一趟冒泡排序,最大元素70已经放到了最后,在第二趟冒泡排序i中,则只需要比较前9个数即可,所以内循环j9-i)

持续对每次对越来越少的元素,重复上面的步骤。

直到所有的数字都比较完成符合a[i]a[i+1],即完成冒泡排序。

图示过程

以数组数据{70,50,30,20,10,70,40,60}为例:

如图,每一次排序把一个最大的数被放在了最后,然后按照这个趋势逐渐往前,直到按从小到大的顺序依次排序。

排序的规律有两种:一种是“升序”,从小到大;另一种是“降序”,从大到小。升序降序的关键为if条件的大于或者小于。

春考有约,你与大学的约定




转载请注明:http://www.aierlanlan.com/rzdk/242.html