一直用的冒泡法排序,其实是可以改进的,加入标识flag后,对于类似于数组array[10]={55,2,6,4,32,12,9,73,26,37}的数组只用排序3次就可以搞定,而不用做后面的无用功,好像一般的教材上都没有说到这一点,包括一些算法设计都没有说到。
#include <iostream.h>
void main()
{
//int array[10]={55,2,6,4,32,12,9,73,26,37};
int array[10]={1,2,3,4,5,98,97,96,95,94};
int i,j,t;
int flag;//加入控制标识
for(i=0;i<10;i++)cout<<array[i]<<",";
cout<<endl;
for(j=0;j<9;j++)
{
flag=0;
for(i=0;i<10-j;i++)
if(array[i]>array[i+1])
{
t=array[i];
array[i]=array[i+1];
array[i+1]=t;
flag=1;
}
if(flag==0)break;//无位置交换时中止循环
for(i=0;i<10;i++) cout<<array[i]<<",";
cout<<endl;
}
}