对已给的数据,数组练习,实现数据的冒泡排序。(从大到小排序)
例如:9 8 13 12。
第一轮排序如下:8,9,13,12 8,9,13,12 8,9,12,(13) 选出最大数13,比较三次
第二轮排序如下:8,9,12 8 ,9(12) 选出最大数12,比较两次
第三轮排序如下:8,(9) 选出最大数9,比较1次
空间复杂度为O(1)
所以,我们可以利用数组,把比较轮数和次数分别定义为i,j。申请一个空间temp。用来交换数据
基于上述例子,发现:给出4个数据,需要比较三轮,每一轮比较的次数是4-轮数。
所以,代码如下
#include<stdio.h>
int main()
{
int arry[]={1,9,4,6,5,88,54,454};
int i;
int j;
int temp;
int len = sizeof(arry)/sizeof(arry[0]);
for(i= 0;i<len-1;i++)
{
for(j = 0;j<len-1-i;j++)
{
if(arry[j]< arry[j+1])
{
temp = arry[j];
arry[j] = arry[j+1];
arry[j+1] = temp;
}
}
}
for(i =0;i<len;i++)
{
printf(" %d ",arry[i]);
}
return 0;
}
测试结果如下:
454 88 54 9 6 5 4 1
注意:最后输出结果时,要输出所有的长度,即i<len。