快速拍粗和氣泡排序

2022-03-21 22:07:53 字數 784 閱讀 1620

快速排序演算法

快速排序由c. a. r. hoare在2023年提出。它的基本思想是:通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列。

編輯氣泡排序演算法的運作如下:(從後往前)

比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

針對所有的元素重複以上的步驟,除了最後乙個。

持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。[1]

編輯若檔案的初始狀態是正序的,一趟掃瞄即可完成排序。所需的關鍵字比較次數

和記錄移動次數

均達到最小值:

,。所以,氣泡排序最好的時間複雜度為

。若初始檔案是反序的,需要進行

趟排序。每趟排序要進行

次關鍵字的比較(1≤i≤n-1),且每次比較都必須移動記錄三次來達到交換記錄位置。在這種情況下,比較和移動次數均達到最大值:

氣泡排序的最壞時間複雜度為

。綜上,因此氣泡排序總的平均時間複雜度為

。氣泡排序就是把小的元素往前調或者把大的元素往後調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以,如果兩個元素相等,我想你是不會再無聊地把他們倆交換一下的;如果兩個相等的元素沒有相鄰,那麼即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前後順序並沒有改變,所以氣泡排序是一種穩定排序演算法。

氣泡排序和快速排序

來自 氣泡排序1 自創的,不知道它叫什麼排序,和冒泡差不多。public void risepot ref int array 氣泡排序2 public void risepot ref int array 快速排序 public void quicksort ref int arr,int low...

氣泡排序和快速排序

pragma mark pragma mark 氣泡排序 選擇排序 void swap int a,int b void bubblesort int a,int length 簡單優化,對於已經有序的序列,省去接下的迴圈。對於這種優化,實際還需考慮,多了賦值和判斷操作。if temp length...

快速排序和氣泡排序

created by dcp on 2018 8 21.快速排序 1 在資料集之中,選擇乙個元素作為基準 pivot 2 所有小於 基準 的元素,都移到 基準 的左邊 所有大於 基準 的元素,都移到 基準 的右邊 3 對 基準 左邊和右邊的兩個子集,不斷重複第一步和第二步,直到所有子集只剩下乙個元素...