您当前的位置:首页 > 互联网教程

C语言冒泡排序法是什么

发布时间:2025-05-13 09:54:14    发布人:远客网络

C语言冒泡排序法是什么

一、C语言冒泡排序法是什么

冒泡排序法,是C语言常用的排序算法之一,意思是对一组数字进行从大到小或者从小到大排序的一种算法。

相邻数值两两交换。从第一个数值开始,如果相邻两个数的排列顺序与我们的期望不同,则将两个数的位置进行交换(对调);如果其与我们的期望一致,则不用交换。重复这样的过程,一直到最后没有数值需要交换,则排序完成。

基本思想:比较相邻的两个数,如果前者比后者大,则进行交换。每一轮排序结束,选出一个未排序中最大的数放到数组后面。

基本思想:选取一个基准元素,通常为数组最后一个元素(或者第一个元素)。从前向后遍历数组,当遇到小于基准元素的元素时,把它和左边第一个大于基准元素的元素进行交换。在利用分治策略从已经分好的两组中分别进行以上步骤,直到排序完成。

基本思想:和交换排序不同的是它不用进行交换操作,而是用一个临时变量存储当前值。当前面的元素比后面大时,先把后面的元素存入临时变量,前面元素的值放到后面元素位置,再到最后把其值插入到合适的数组位置。

基本思想:依次选出数组最小的数放到数组的前面。首先从数组的第二个元素开始往后遍历,找出最小的数放到第一个位置。再从剩下数组中找出最小的数放到第二个位置。以此类推,直到数组有序。

以上内容参考百度百科-排序算法、百度百科-c语言冒泡排序

二、关于c语言冒泡问题

1、算法思想:通过相邻两个数之间的比较和交换,使较小的数逐渐从底部移向顶部(小数上浮),较大的数逐渐从顶部移向底部(大数下沉),就像水底的气泡一样逐渐向上冒,故而得名。

2、(1)比较第一个数与第二个数,若a[0]>a[1],则交换,大数放在a[1]中;然后比较a[1]与a[2]……依次类推,直至第n-1个数和第n个数比较结束为止——第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上,沉到了最底部;

3、(2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置;

4、(3)重复上述过程,共经过n-1趟冒泡排序后,排序结束

5、n个数据排序,需要进行n-1轮冒泡排序,第i轮冒泡需要n-i次比较;

6、使用两重循环控制整个排序过程,外层循环控制比较的轮次,内层循环控制每一轮的比较次数。

7、例:从键盘上任意输入5个整数,要求按从小到大进行排序并在屏幕上显示出来。(冒泡排序法)

8、{temp=a[j];a[j]=a[j+1]; a[j+1]=temp;}

三、C语言冒泡排序法

printf("input 10 numbers:\n");

for(j=0;j<9;j++)/*进行9次循环实现9趟比较*/

for(i=0;i<9-j;i++)/*在每一趟中进行9-j次比较*/

if(a[i]>a[i+1])/*相邻两个数比较,想降序只要改成a[i]<a[i+1]*/

printf("the sorted numbers:\n");

1、比较相邻的元素。如果第一个比第二个大(小),就交换他们两个。

2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大(小)的数。

3、针对所有的元素重复以上的步骤,除了最后已经选出的元素(有序)。

4、持续每次对越来越少的元素(无序元素)重复上面的步骤,直到没有任何一对数字需要比较,则序列最终有序。

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

for(j= 9; j> i; j--)//从后往前冒泡