回覆列表
  • 1 # 影片好笑

    歸併排序是穩定的“快速排序和堆排序都不穩定.不穩定:就是大小相同的兩個數,經過排序後,最終位置與初始位置交換了。快速排序:27 23 27 3以第一個27作為pivot中心點,則27與後面那個3交換,形成3 23 27 27,排序經過一次結束,但最後那個27在排序之初先於初始位置3那個27,所以不穩定。堆排序:比如:3 27 36 27,如果堆頂3先輸出,則,第三層的27(最後一個27)跑到堆頂,然後堆穩定,繼續輸出堆頂,是剛才那個27,這樣說明後面的27先於第二個位置的27輸出,不穩定。”“2 歸併排序(MergeSort)歸併排序先分解要排序的序列,從1分成2,2分成4,依次分解,當分解到只有1個一組的時候,就可以排序這些分組,然後依次合併回原來的序列中,這樣就可以排序所有資料。合併排序比堆排序稍微快一點,但是需要比堆排序多一倍的記憶體空間,因為它需要一個額外的陣列。”以Ai與Aj為例子快速排序有兩個方向,左邊的i下標一直往右走,當a[i] <= a[center_index],其中center_index樞元素的陣列下標,一般取為陣列第0個元素。而右邊的j下標一直往左走,當a[j] > a[center_indexij都走不動了,i <= j, 交換a[i]和a[j],重複上面的過程,直到i>j。交換a[j]和a[center_index],完成一趟快速排序。在中樞元素和a[j]交換的時候,很有可能把前面的元素的穩定性打亂,比如序列5 3 3 4 3 8 9 10 11,現在中樞元素5和3(第5個元素,下標從1開始計)交換就會把元素3的穩定性打亂,所以快速排序是一個不穩定的排序演算法,不穩定發生在中樞元素和a[j]交換的時刻。

  • 中秋節和大豐收的關聯?
  • 矛盾是如何轉換的?