您的位置:首页 > 其它

冒泡排序的优化

2016-08-14 18:16 148 查看
冒泡排序的优化



#include<stdio.h>
void bubble_sort(int array[],int len)
{
int i,j,count1,count2 = 1;
int flag1;  //flag1标志位,每跑完一趟就判断一次原数组现在是否有序,如果有序就break;
int flag2;  //flag2记录位,记录下最后一次交换的下标j;
int k = len - 1;//控制内循环第一次的初始判断条件

for(i=0;i<len-1;i++)
{   flag1 = 1;  //默认标志位为1;

for(j=0;j<k;j++)
{
//交换
if(array[j]>array[j+1])
{
array[j] = array[j] + array[j+1];
array[j+1] = array[j] - array[j+1];
array[j] = array[j] - array[j+1];
flag1 = 0;
flag2 = j;//记录最后一次的j值
}
printf("第%d次:   ",count2++);
printf(" %d<-->%d ",array[j],array[j+1]);
for(count1 = 0;count1 < len;count1++)
printf("  %d",array[count1]);
printf("\n");
}
if(flag1 == 1)//判断标志位:如果这趟走完,没有发生交换,则原数组有序,跳出循环;
break;
k = flag2;  //将最后一次交换的位置给k,减少比较的次数;
}
}
int main()
{
int count=10,a[10]={9,1,0,2,3,4,5,6,7,8};
bubble_sort(a,count);

}


结果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: