根據每次循環後判斷是否有序,從而實現冒泡法的優化
void Swap(int *a, int *b)
{
int t = *a;
*a = *b;
*b = t;
}
BubbleSort(int array[], int size) {
//一共經過n次冒泡過程,每一次冒泡過程可以把一個最大的數放到最後面
int sorted = 1; //假設數組已經有序
for (int i = 0; i < size; i++) {
for (int j = 0; i < size - 1 - j; j++) {
if (array[j]>array[j + 1]) {
Swap(array + j, array + j + 1);
//發生過交換了,有序不成立。
sorted = 0;
}
}
//冒泡完已經有序
if (sorted == 1) {
return;
}
}
}