#include <stdio.h>
//冒泡排序,开始的时候两个数进行比较,大的向后小的向前,第一次比较很容易的就把最大的一个数字放到了最后小的呢,继续向前,第二次当然也找到了第二个大的,放到倒数第二的位置,如此下去便可。这个是优化的冒泡排序方法,让k=j保存最后的那个数的下标,这样k后面的数都是排序好的了,这个排序是稳定的,时间复杂度是N平方
void main()
{
int array[10] = {1,2,11,22,33,4,23,234,4,6};
int length = sizeof(array)/sizeof(array[0]);
int k=0, s=0, i=0, j=0, m=0;
//冒泡排序开始
int a;
for(a=0;a<=9;a++)
{
printf("%d \n",array[a]);
}
for(i = length-1;i>0;i=k)
{
for(j=0, k=0;j<i;j++)
{
if(array[j]>array[j+1])//把比较出来大的数据向后移动
{
m=array[j];
array[j]=array[j+1];
array[j+1]=m;
k=j;
}
}
}
//冒泡排序结束,输出显示排序的结果
for(s=0; s<length; s++)
{
printf("%d\n",array[s]);
}
}
相关分类