冒泡排序对n个数据需要进行n-1次比较,若数据已经有序,则仍需n-1次比较,效率较低。改进型算法在某遍扫描后,发现数据都已有序,则结束排序过程。
实现方法:设置旗帜变量,若在某次扫描过程中没有数据交换则表明数据已经有序,检测旗帜变量,确定是直接跳出循环还是进行后续比较。
c++代码实现:
1.随机数生成部分 CreatData 同基本冒泡
2.冒泡排序部分 BubbleSort_Improve
3.main函数测试部分 TestMain 只需修改函数调用部分为BubbleSort_Improve
void BubbleSort_Improve(int arr[],int n)
{
int temp,flag=0;
for(int i=0; i<n; i++)
{
for(int j=n-1; j>i; j--)
{
if(arr[j]<arr[j-1])
{
temp=arr[j];
arr[j]=arr[j-1];
arr[j-1]=temp;
flag=1;
}
}
if(flag==0)break;
else flag=0;
}
}