快速排序
快速排序是一種很有效的排序方法,它是對起泡排序的一種改進,它的基本思想是:通過一趟排序,將待排記錄分成兩個獨立的部分,其中一部分均比乙個關鍵字小,另一部分均比這個關鍵字大。然後使用遞迴,分別對這兩部分繼續進行快速排序。
具體是怎樣將待排記錄分成兩個部分的呢?以前在論壇上看過一篇文章,感覺說的很好,叫「挖坑填土」法。
①:選取乙個關鍵字(可以選擇序列的第乙個記錄為關鍵字),把它挖出,這個地方就留下了乙個坑。②:然後從序列的後面搜尋,當找到乙個比關鍵字小的數時,將這個小的數挖出,填入前面的坑中。③:然後從序列的前面搜尋,當找到乙個比關鍵字大的數時,將這個大數挖出,填入剛剛小數留下的坑中。④:然後返回②步驟。
快速排序的平均執行時間為θ(nlogn)。
1void quick_sort(int s, int l, intr)2
18 s[i] =x;
19 quick_sort(s, l, i - 1); //
遞迴呼叫
20 quick_sort(s, i + 1
, r);21}
22 }
幾種常用的排序方法
幾種常用的排序方法 1.氣泡排序 氣泡排序演算法的運作如下 比如按從小到大排列 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作第一步中的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的...
幾種常用的排序方法
1 氣泡排序,原理 依次比較相鄰的兩個值,如果後面的比前面的小,則將小的元素排到前面。依照這個規則進行多次並且遞減的迭代,直到順序正確。因為是兩個相鄰的數進行比較,剛開始進行第一輪比較時總共進行6次比較,為陣列長度減一。經過第一輪的比較能夠將陣列中最大的那個數找出且放到最後一位,此時進行第二輪比較原...
幾種常用的排序方法7 希爾排序
希爾排序 希爾排序又稱為縮小增量排序,它是直接插入排序的一種改進,它的基本思想是 將整個待排記錄序列分割成若干個子串行,然後分別對子序列進行直接插入排序,待整個序列中的記錄基本有序時,再對全體記錄進行直接插入排序。上面是資料結構數上話,看起來很繞人,其實很簡單,就是一種插入排序,只是如何選取子數列 ...