目錄
一、直接插入排序
二、希爾排序
三、直接選擇排序
四、堆排序
五、冒泡排序
六、快速排序
七、歸并排序
八、基數排序
Hello,你好呀,我是灰小猿,一個超會寫bug的程式猿,
最近在進行學習的時候發現總能用到資料結構中的各種排序演算法,有的記憶不到位的還需要重新去了解學習,同時在很多的面試中面試官都喜歡提問常見排序的基本思想和步驟,所以今天就抽空在這里和大家用大白話總結一下常見的內部排序演算法設計的基本思想,可能比較言簡意賅,所以歡迎有其他見解的小伙伴在評論區提出分享,

一、直接插入排序
直接插入排序的基本思想:每步將一個待排序的記錄按其排序碼值的大小,插到前面已經排好的檔案中的適當位置,直到全部插入完為止,
二、希爾排序
希爾排序的基本思想:先取一個小于n的整數d1作為第一個增量,把檔案的全部記錄分成d1個組,所有距離為dI的倍數的記錄放在同一個組中,先在各組內進行直接插入排序;
然后,取第二個增量d2<d1重復上述的分組和排序,直至所取的增量dr=1(dr<dr-1<0<d2<dl),即所有記錄放在同一組中進行直接插入排序為止,該方法實質上是一種分組插入方法,
三、直接選擇排序
直接選擇排序的基本思想:選擇法排序也是常用的排序方法之一,首先在所有記錄中選出排序碼最小的記錄,把它與第1個記錄交換,然后在其余的記錄內選出排序碼最小的記錄,與第2個記錄交換...依此類推,直到所有記錄排完為止,
四、堆排序
堆排序的基本思想:堆排序是一種樹形選擇排序,是對直接選擇排序的有效改進,它通過建立初始堆和不斷地重建堆,逐個地將排序關鍵字按順序輸出,從而達到排序的目的,
五、冒泡排序
冒泡排序的基本思想:將被排序的記錄陣列R[1...n]垂直排列,每個記錄R[i]看作是重量為ki的氣泡,根據輕氣泡不能在重氣泡之下的原則,從下往上掃描陣列R,凡掃描到違反本原則的輕氣泡,就使其向上“飄浮”,如此反復進行,直到最后任何兩個氣泡都是輕者在上,重者在下為止,
六、快速排序
快速排序的基本思想:采用了一種分治的策略,將原問題分解為若干個規模更小但結構與原問題相似的子問題,遞回地解這些子問題,然后將這些子問題的解組合為原問題的解,
七、歸并排序
歸并排序的基本思想:將兩個或兩個以上的有序子表合并成一個新的有序表,初始時,把含有n個結點的待排序序列看作由n個長度都為1的有序子表所組成,將它們依次兩兩歸并得到長度為2的若干有序子表,再對它們兩兩合并,直到得到長度為n的有序表為止,排序結束,
八、基數排序
基數排序的基本思想:從低位到高位依次對待排序的關鍵碼進行分配和收集,經過d趟分配和收集,就可以得到一個有序序列,
關于常見排序演算法的基本思想淺談就先和大家聊到這里,
之后還將具體針對每一個演算法進行深入的剖析講解,
感興趣的小伙伴可以持續關注喲!

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/273270.html
標籤:其他
