幾種排序概念

2021-07-12 04:43:10 字數 1047 閱讀 3329

1. 選擇排序:

重點是選擇最小值的那個步驟,不是用兩兩置換的方法找出剩餘的最小值,而是和第乙個值作比較,還有兩個相同數值並不需要置換。

2. 插入排序:

設立哨兵,作為臨時儲存和判斷陣列邊界之用。

3. shell排序:

先將整個待排序的記錄序列分割成為若干子串行分別進行直接插入排序,待整個序列中的記錄「基本有序」時,再對全體記錄進行依次直接插入排序

4. 堆排序:

堆排序是一種樹形選擇排序,是對直接選擇排序的有效改進

大頂堆,小頂堆從演算法描述來看,堆排序需要兩個過程,一是建立堆,二是堆頂與堆的最後乙個元素交換位置。所以堆有兩個函式組成。一是建堆的滲透函式,二是反覆呼叫滲透函式實現排序的函式

5. 二元選擇排序:

簡單選擇排序,每趟迴圈只能確定乙個元素排序後的定位。我們可以考慮改進為每趟迴圈確定兩個元素(當前趟最大和最小記錄)的位置,從而減少排序所需的迴圈次數。改進後對n個資料進行排序,最多隻需進行[n/2]趟迴圈即可

6. 歸併排序:

強調內容歸併排序是利用遞迴和分而治之的技術將資料序列劃分成為越來越小的半子表,再對半子表排序,最後再用遞迴步驟將排好序的半子表合併成為越來越大的有序序列,歸併排序包括兩個步驟,分別為:1)劃分子表2)合併半子表

7.快速排序

任取乙個資料作為關鍵資料,將所有比它小的數放到前面,所有比它大的數放到後面。不穩定

void swap(int k,int low,int high)

int partition(int k,int low,int high)

if(k[m]>k[high])

if(k[m]>k[low])

point=k[low];

while(lowwhile(low < high && k[high]>=point)

swap(k,low,high);

while(lowreturn low;

}void qsort(int k,int low,int high)

}void quicksort(int k,int n)

mysql 幾種排序 MySql的幾種排序方式

資料排序的情況很常見,今天介紹一下mysql的幾種排序方式,是我最近有使用到的,希望能對大家有所幫助。這裡先建立一張普通的表,create table test1 id bigint 20 not null auto increment,name varchar 50 not null,date t...

幾種排序演算法

幾種比較常見的排序演算法 第一種 函式功能 雙向氣泡排序 2013.7.8 時間複雜度o n 2 include void mp int array,int n if mmax 0 沒有記錄交換,掃瞄結束 break bmax mmax for i bmax 1 i bmin i 此次掃瞄使輕氣泡上...

幾種排序演算法

本帖依據學習進度持續更新 資料結構與演算法分析 c語言描述 學到第七章,是時候該系統的學習一下排序演算法了。首先學到的是插入排序,演算法就不贅述了,書上部落格上到處都有。書上的兩個定理還不太明白 插入排序 定理7.1 n個互異數的陣列的平均逆序數是n n 1 4。定理7.2 通過交換相鄰元素進行排序...