幾種常用排序演算法溫習

2021-09-20 15:08:43 字數 1660 閱讀 4790

1.直接插入排序

基本思想:順序地將待排序的記錄按其關鍵碼的大小插入到已排序的記錄子串行的適當位置。

演算法**

//直接插入排序

public static void insertsort(seqlistseq)

seq[j + 1] = tmp;

}console.write("i= ", i);

seq.display();}}

備註:這裡的seqlist是自定義順序表,這裡就不詳述了。

直接插入排序時間複雜度與順序表的有序性有關,基本在o(n)到o(n2)之間。該演算法是穩定的。若排序記錄的數目 n 較小(如 n≤50)時,可採用直接插入排序或簡

單選擇排序。

2.氣泡排序

基本思想:將相鄰的記錄的關鍵碼進行比較,如果前面記錄的關鍵碼大於後面記錄的關鍵碼,則將它們交換,否則不交換。

演算法**

//氣泡排序

public static void bubblesort(seqlistseq)

}tmp = seq[i];//交換

時間複雜度:o(n^2),它是穩定的排序。若記錄的初始狀態已經按關鍵碼基本有序,可採用直接插入排序或氣泡排序。

基本思想:通過不斷比較關鍵碼,以某個記錄為界(該記錄稱為支點) ,將待排序列分成兩部分。其中,一部分滿足所有記錄的關鍵碼都大於或等於支點記錄的關鍵碼,另一部分記錄的關鍵碼都小於支點記錄的關鍵碼。把以支點記錄為界將待排序列按關鍵碼分成兩部分的過程,稱為一次劃分。對各部分不斷劃分,直到整個序列按關鍵碼有序為止。

演算法**

//快速排序,遞迴,以第乙個元素為支點

時間複雜度:快速排序方法的平均效能最好,時間複雜度為o(nlog2n),當待排序序列已經按關鍵碼隨機分布時,快速排序是最適合的。但快速排序在最壞情況下時間複雜度是o(n2)。快速排序方法是不穩定的排序方法。

幾種常用排序演算法溫習

幾種常用排序演算法溫習 1.直接插入排序 基本思想 順序地將待排序的記錄按其關鍵碼的大小插入到已排序的記錄子串行的適當位置。演算法 直接插入排序 public static void insertsort seqlistseq seq j 1 tmp console.write i i seq.di...

幾種常用排序演算法溫習

幾種常用排序演算法溫習 1.直接插入排序 基本思想 順序地將待排序的記錄按其關鍵碼的大小插入到已排序的記錄子串行的適當位置。演算法 直接插入排序 public static void insertsort seqlistseq seq j 1 tmp console.write i i seq.di...

幾種常用排序演算法

一 氣泡排序 已知一組無序資料a 1 a 2 a n 需將其按公升序排列。首先比較a 1 與a 2 的值,若a 1 大於a 2 則交換兩者的值,否則不變。再比較a 2 與a 3 的值,若a 2 大於a 3 則交換兩者的值,否則不變。再比較a 3 與a 4 依此類推,最後比較a n 1 與a n 的值...