八大排序演算法思想介紹

2021-09-18 07:18:35 字數 1418 閱讀 7756

1.插入排序

*直接插入排序

*希爾排序

2.選擇排序

*簡單選擇排序

*堆排序

3.交換排序

*氣泡排序

*快速排序

4.歸併排序

5.基數排序

不穩定排序:簡單選擇排序,快速排序,希爾排序,堆排序

穩定排序:氣泡排序,直接插入排序,歸併排序,奇數排序

一.插入排序

將第乙個和第二個元素排好序,然後將第3個元素插入到已經排好序的元素中,依次類推

(插入排序最好的情況就是陣列已經有序了)

二.希爾排序

因為插入排序每次只能操作乙個元素,效率低

元素個數n,取奇數k=n/2,將下標差值為k的數分為一組(一組元素個數看總元素個數決定),在組內構成有序序列,再取k=k/2,將下標差值為k的數分為一組,構成有序序列,直到k=1,然後再進行直接插入排序

三.簡單選擇排序

選出最小的數和第乙個數交換,再在剩餘的數中又選擇最小的和第二個數交換,依次類推

四.堆排序

以公升序排序為例,利用小根堆的性質(堆頂元素最小)不斷輸出最小元素,直到堆中沒有元素

1.構建小根堆

2.輸出堆頂元素

3.將堆低元素放乙個到堆頂,再重新構造成小根堆,再輸出堆頂元素,以此類推

五.氣泡排序

改進1:如果某次冒泡不存在資料交換,則說明已經排序好了,可以直接退出排序

改進2:頭尾進行冒泡,每次把最大的沉底,最小的浮上去,兩邊往中間靠1

六.快速排序

選擇乙個基準元素,比基準元素小的放基準元素的前面,比基準元素大的放基準元素的後面,這種動作叫分割槽,每次分割槽都把乙個數列分成了兩部分,每次分割槽都使得乙個數字有序,然後將基準元素前面部分和後面部分繼續分割槽,一直分割槽直到分割槽的區間中只有乙個元素的時候,乙個元素的序列肯定是有序的嘛,所以最後乙個公升序的序列就完成啦

七.歸併排序

將乙個無序的數列一直一分為二,直到分到序列中只有乙個數的時候,這個序列肯定是有序的,因為只有乙個數,然後將兩個只含有乙個數字的序列合併為含有兩個數字的有序序列,這樣一直進行下去,最後就變成了乙個大的有序數列

八.基數排序

找到最大的數,開個比最大的數大一點的陣列,遍歷每個元素,某個元素為k,則a[k]++,最好遍歷陣列a,a[k]等於多少就輸出多少個k

只能處理整型數

posted @

2019-04-13 10:45

y先森0.0 閱讀(

...)

編輯收藏

八大排序介紹

插入排序是一種最簡單直觀的排序演算法,它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。演算法步驟 1 將第一待排序序列第乙個元素看做乙個有序序列,把第二個元素到最後乙個元素當成是未排序序列。2 從頭到尾依次掃瞄未排序序列,將掃瞄到的每個元素插入有序序列...

八大排序演算法

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...