冒泡排序升级版
我们都是知道的,最初的冒泡排序是相邻的两元素比较大小,然后交换位置,但是每次都是执行到最后 但是对于基本有序的数列,或者后面部分是有序的数列来书说,就经行的很多次没有必要的比较
最后一次比较 enchange记录最后一次比较的位置 。enchange后面全是有序的;下次比较的区间就是0--enchange,相比原来的n-i 快了不少;
void bobble(int a[],int n)
{
int bound,enchange,temp;
enchange=n-1;
while(enchange!=0)
{
bound=enchange;
enchange=0;
for(int i=0;i<bound;i++)
{
if(a[i]>a[i+1])
{
temp=a[i+1];
a[i+1]=a[i];
a[i]=temp;
enchange=i;
cout<<enchange<<endl;
}
}
}
}