八大排序演算法學習記錄

2021-10-01 23:19:00 字數 1043 閱讀 4483

插入排序:把當前第i個元素插入到應在的位置.為目標元素尋找位置

1.直接排序:像撲克牌一樣,新建乙個佇列,一張一張地根據手裡已有的牌排序.

2.希爾排序:先從中間對半分成兩個佇列,然後兩個佇列由前到後一對一對比排序;然後根據單雙數分成兩個佇列,分別排序,總體所在位置不變;然後在整體排序.

選擇排序:每次為第i個位置尋找合適的元素,然後放入該位置.為目標位置尋找元素

3.簡單選擇排序:從第乙個位置開始,搜尋選擇最小的數放在該位置,後面以此類推.

4.堆排序:二叉樹方式,類似於二分法,分為大根堆和小根堆.大根堆:通過一系列對換分別把兩個主分支中最大的數放到分支頂端,然後把最大的選擇到頂端後輸出,再把最小的數放到頂端,.....再通過一系列對換.....,後面一次類推.

交換排序:針對每個i元素與相鄰元素比較,若他們的相對順序與目標排序順序不同,則交換.

5.氣泡排序:每個元素,與前面相鄰的元素比較,若他們的相對順序與目標排序順序不同,則交換.

6.快速排序:每個i元素把佇列分成兩截,前半都比它小,後半都比它大.方法:每次從兩頭尋找,若前端找到比i元素大的,就等後端找到比i元素小的然後交換,直到兩端的尋找相遇,則讓i與相遇點的元素交換,後面以此類推.

7.歸併排序:遞迴合併排序,分成2個n/2個元素的子串行,然後遞迴排序,回溯到其子序列最多只有2個元素一組的時候對所有子串行排序,然後不斷遞迴合併再排序.

8.基數排序:桶排序,有侷限性,10個"桶"對應數字0~9,先按個位排序,再按十位排序,一次類推直到最高位.

10個數進行排序的用時排序:氣泡排序》選擇排序》快速排序/插入排序》歸併排序/基數排序/堆排序/希爾排序.

冒泡和選擇最耗時,插入排序和快速排序看情況,有時是最快的,剩下的都比較省時.

關於排序是否是穩定排序:可以假設佇列中由相同值得元素,排序過後如果這兩個值得前後位置一定不變,則是穩定排序.

參考文章:

八大排序演算法學習筆記 氣泡排序

氣泡排序 bubble sort 台灣譯為 泡沫排序 或氣泡排序 是一種簡單的 排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 ...

八大排序演算法

1.直接插入排序 原理 將陣列分為無序區和有序區兩個區,然後不斷將無序區的第乙個元素按大小順序插入到有序區中去,最終將所有無序區元素都移動到有序區完成排序。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。實現 void insertsort node l,int length void shell ...

八大排序演算法

一 概述 八大排序演算法包括 1 插入排序之直接插入排序 straight insertion sort 2 插入排序之希爾排序 shells sort 3 選擇排序之簡單選擇排序 selection sort 4 選擇排序之堆排序 heap sort 5 交換排序之氣泡排序 bubble sort...