冒泡排序的優化

根據每次循環後判斷是否有序,從而實現冒泡法的優化

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;
   }
  }
 }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章