-
int i,j,temp;
scanf("%d",&a[j]);这里没有值,此外,您最初设置了 5 个数字,那么您要输入什么?
排序部分也不正确。
最终输出只输出 4 个数字?
-
冒泡排序是最简单的排序方法,并且易于理解。 虽然它的计算步骤比较多,而且不是最快的,但它是最基本的,初学者必须掌握。
气泡排序的原理是:从左到右,比较相邻的元素。 每一轮比较都会找到序列中最大或最小的一个。 此数字将从序列的最右侧弹出。
例如,在第一轮比较之后,所有数字中最大的数字将浮动到最右边; 在第二轮比较之后,所有数字中第二高的数字将浮动到倒数第二的位置......就这样,一轮又一轮地进行对比,最后实现了从小到大的顺序。
例如,按从小到大的顺序对以下序列进行排序:
第一轮:1)90和21对90>21,然后他们交换位置:
2)90和132的比例,90<132,那么不要交换位置。
3) 132 和 58 的比率,132 > 58,然后他们交换头寸:
4) 132 和 34 的比率,132>34,然后他们交换位置:
至此,第一轮结束。 第一轮的结果是找到序列中最大的数字并浮动到最右边。
比较时,每轮中的第 n 个比较是新序列中第 n 个元素和第 n+1 个元素的比较(假设 n 从 1 开始)。
第二轮:1)21和90的比例,21<90,无需交换位置。
2) 90 和 58 的比例,90 > 58,然后他们交换位置:
3)90和34的比例,90>34,然后他们交换位置:
至此,第二轮对比结束。 第二轮的结果是找到序列中的第二大数字,并浮动到最右边的第二个位置。
第三轮:1)21和58的比例,21>58,然后他们交换位置:
2)21和34的比例,21<34,然后不要切换位置。
至此,第三轮结束。 第三轮的结果是找到序列中的第三大数字,并浮动到最右边的第三个位置。
第四轮:1)58和21对58<21,没有位置交换。
此时,对整个序列进行排序。 从小到大的顺序是“58 21 34 90 132”。 从这个例子中也可以得出结论,如果有n个数据,那么只需要比较n 1轮。
除了第一轮之外,您不必比较所有轮次。 因为经过前几轮的对比,已经比较过的轮次已经找到了该轮中最大的数字,并且向右浮动,所以右边的数字不需要比较。
-
冒泡排序是计算机科学中一种更简单的排序算法。
它重复访问要排序的序列,一次比较两个元素,如果它们的顺序错误,则交换它们。 重复访问该系列的工作,直到不再需要交换,即序列已被排序。
该算法的名称来源于这样一个事实,即元素越大,就会通过交换慢慢“浮动”到序列的顶部。
算法原理。 冒泡排序算法的工作原理如下:(从后到前)。
比较相邻元素。 如果第一个比第二个大,请交换它们。
对每对相邻元素执行相同的工作,从第一对开始,到最后一对结束。 此时,最后一个元素应该是最大的。
对除最后一个元素之外的所有元素重复上述步骤。
每次重复上述步骤,使元素越来越少,直到没有数字对进行比较。
#include
#define size 8
voidbubble_sort(inta,intn);
voidbubble sort(inta,intn) n 是数组 a}} 中的元素数}}
intmain()
inti;bubble_sort(number,size);
for(i=0;iprintf("");}
楼主,你应该说,你的方案在实施的时候,“第一个数字大于第二个数字按升序排列时必须满足第一个数字,排序排列时第一个数字必须小,第二个数字必须满足,否则会有错误”,不要说人们在冒泡排序时会有这样的漏洞。 气泡排序的思路:比较两个相邻的,并根据排序要求将它们移置(升序和降序颠倒)。 >>>More
这显然是一个二维数组,二维数组可以看作是一维数组,for(i = 0; ifor(j = 0; j < n; j++)printf("%d",a[i][j) >>>More