当出现{10,8,9,15,28,39}这样的序列时,只需要一次排序过程就能完成从小到大的排序。
即第一次排序后序列变为{8,9,10,15,28,39}。虽然已经完成排序,但还是会走完接下来的排序判断过程,
这将造成效率的下降。通过对冒泡排序进行改进,在判断排序已经完成后,即跳出循环,可以解决效率问题。
//冒泡排序改进版
void bubbleSortModify(int(&a)[10])
{
for (int i = 0; i < 10; i++)
{
bool flag = false;
for (int j = 0; j < 10 - i - 1; j++)
{
//交换
if (a[j]>a[j + 1])
{
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
flag = true;
}
}
if (flag == false)
{
return;
}
}
}
int main()
{
int array[10] = {10,8,6,19,3,41,4,7,98,1};
cout << "排序前:";
for (int i = 0; i < sizeof(array) / sizeof(int); i++)
{
cout << array[i] << " ";
}
//quickSort(array,0,9);
//selectSort(array);
//bubbleSort(array);
bubbleSortModify(array);
cout << "排序后:";
for (int i = 0; i < sizeof(array) / sizeof(int); i++)
{
cout << array[i] << " ";
}
return 0;
}