常用排序演算法總結

2021-09-27 08:51:24 字數 2072 閱讀 9607

1.常見的排序演算法

插入排序、選擇排序、氣泡排序、快速排序、堆排序、歸併排序、希爾排序、二叉樹排序、計數排序、桶排序、基數排序

2.各種排序演算法的時間複雜度和穩定性

3.演算法詳解

氣泡排序

(1) 原理:依次比較相鄰的兩個數,將值大/小的元素交換到右邊。

(2) 思路:讓陣列當中相鄰的兩個數進行比較,陣列當中比較小的數值向下沉,數值比較大的向上浮!外層for迴圈控制迴圈次數,內層for迴圈控制相鄰的兩個元素進行比較。

(3) **:

public static void bubblesort(int  arr)}}

}

插入排序

(1) 原理:在要排序的一組數中,假定前n-1個數已經排好序,現在將第n個數插到前面的有序數列中,使得這n個數也是排好順序的。如此反覆迴圈,直到全部排好順序。

(2) 思路:遍歷陣列,遍歷到i時,a0,a1…ai-1是已經排好序的,取出ai,從ai-1開始向前和每個比較大小,如果小於,則將此位置元素向後移動,繼續先前比較,如果不小於,則放到正在比較的元素之後。可見相等元素比較是,原來靠後的還是拍在後邊,所以插入排序是穩定的。

(3) **:

void insertion_sort (int a, int n) 

}if (minindex != i) }}

快速排序

(1) 原理:說白了就是給基準資料找其正確索引位置的過程。

(2) 思路:快速排序首先找到乙個基準,下面程式以第乙個元素作為基準(pivot),然後先從右向左搜尋,如果發現比pivot小,則和pivot交換,然後從左向右搜尋,如果發現比pivot大,則和pivot交換,一直到左邊大於右邊,此時pivot左邊的都比它小,而右邊的都比它大,此時pivot的位置就是排好序後應該在的位置,此時pivot將陣列劃分為左右兩部分,可以遞迴採用該方法進行。快排的交換使排序成為不穩定的。

(3) **:

public static void quicksort(int a,int l,int r)

else

// 否則退出迴圈

break;

}} // 堆排序演算法

void heap_sort(int a,int length)

}

歸併排序

(1) 原理:把待排序列看成由兩個有序的子串行,然後合併兩個子串行,然後把子序列看成由兩個有序序列…倒著來看,其實就是先兩兩合併,然後四四合併…最終形成有序序列。

(2) 思路:只要從比較2個數列的第乙個數,誰小就先取誰,取了後就在對應數列中刪除這個數。然後再進行比較,如果有數列為空,那直接將另乙個數列的資料依次取出即可。

(3) **:

//將有序陣列a和b合併到c中

void memeryarray(int a, int n, int b, int m, int c)

while (i < n)

c[k++] = a[i++];

while (j < m)

c[k++] = b[j++];

}

希爾排序

(1) 原理:先將整個待排記錄序列分割成為若干子串行分別進行直接插入排序,待整個序列中的記錄基本有序時再對全體記錄進行一次直接插入排序。

(2) 思路:在要排序的一組數中,根據某一增量分為若干子串行,並對子序列分別進行插入排序。

然後逐漸將增量減小,並重複上述過程。直至增量為1,此時資料序列基本有序,最後進行插入排序。

(3) **:

// 希爾排序的一趟插入

public void shellinsert(int nums, int d)

// 存在比其小的數

if (j != i - d)

nums[j + d] = temp;}}

// 希爾排序

public void shellsort(int nums)

}

常用排序演算法總結

總結些常見的排序演算法,方便以後可以重用。資料量不大,為了表達方便就直接使用了陣列。int data null data new int 1.氣泡排序 氣泡排序,從小到大排序 for int i 0 i data.length i 氣泡排序就是說,排序的過程像水裡往上冒的氣泡一樣,每個數字代表乙個氣...

常用排序演算法總結

常用排序演算法總結 選擇排序 對於長度為n的陣列,選擇排序需要大約n2 2詞比較和n次交換。插入排序 對於隨機排列的長度為n且主鍵不重複的陣列 1 平均情況下,需要 n2 4次比較以及 n2 4次交換。2 最壞情況下,需要 n2 2次比較以及 n2 2次交換 3 最好情況下,需要n 1次比較以及0次...

常用排序演算法總結

注 所有排序都是寫的由小到大排序的情況 1.插入排序 1 直接插入排序 穩定 arr sortedindex 1 key 注意這裡的下標 sortedindex 1 2 希爾排序 不穩定 希爾排序好的增量序列的共同特徵 希爾排序演算法 fromid 1801475 type syn 最後乙個增量必須...