氣泡排序及簡單改進方法

2021-10-01 16:18:58 字數 1058 閱讀 4896

氣泡排序

一、畫圖理解

二、**實現

#include#includevoid bubblesort(int *a, int num)

} }for (int k = 0; k < num; k++)

printf("\n");

}int main()

; int num = sizeof(a) / sizeof(a[0]);

bubblesort(a, num);

system("pause");

return 0;

}

三、**優化問題:若是輸入的資料是有序的時候,**也會從頭到尾執行一遍,但是這樣的話,**的效率就不高,那麼,有沒有什麼辦法可以改變這種現象呢?

原理:給開頭定義乙個flag=1;

若是資料是有序的,那麼程式迴圈內部的判決條件將不會實現,在迴圈中給flag賦的值將不會變化,則,在迴圈外面的條件flag==1成立,直接跳出迴圈,就實現了優化。

以下,就是優化後的**。

#include#includevoid bubblesort(int *a, int num)

}if (flag == 1)

}for (int k = 0; k < num; k++)

printf("\n");

}int main()

; int num = sizeof(a) / sizeof(a[0]);

bubblesort(a, num);

system("pause");

return 0;

}

菜鳥一枚,水平有限,謝眾位博友批評指正,不勝感激!

氣泡排序及改進 Python實現

氣泡排序的演算法思路在於對無序表進行多趟比較交換,每趟包括了兩次兩兩相鄰比較,並將逆序的資料項交換位置,最終能將本趟的最大項就位,經過n 1趟比較,實現整表排序。圖表展示 效能改進 如果某趟比對沒有發生任何交換,說明列表已經排好序,可以提前結束演算法 def shortbubblesort alis...

氣泡排序 改進

氣泡排序是最簡單的排序演算法之一,在這裡首先要說明的是乙個要注意的地方。氣泡排序在最好情況下時間複雜度可以是o n 2 也可以是o n 下面看一種大家看得最多的寫法 public void bubblesort int arr 上面這樣寫最好情況下也是o n 2 那麼再來看下面這種寫法 public...

排序演算法 氣泡排序(改進)

假如我們運氣好,用了1輪就已經將整個序列排序好了,整個數列已然是有序的了。可是我們的排序演算法仍然 兢兢業業 地繼續執行第2輪 第3輪 直至n 1輪,這就很沒必要。也就是說如果序列已經有序,每一輪排序還是會繼續比較相鄰的元素,這就相當於做了一些沒用的操作。這種情況下,如果我們能判斷出數列已經有序,並...