常用的排序演算法

2021-08-07 04:46:38 字數 2047 閱讀 9392

常用的排序演算法

氣泡排序

思路:從第0個到第n個,和相鄰的元素進行相比,如果比相鄰的大的話,那麼就交換二者順序,這樣的話0到n範圍內的最大的數就放到n的位置。接著下一次操作,第0個到第n-1個,將0到n-1範圍內的最大值放到n-1。重複執行,最後陣列從小到大排列。

public static void bubble(int array)

} }

} 排序過程:

3 6 8 15 1 20

3 6 8 1 15 20

3 6 1 8 15 20

3 1 6 8 15 20

1 3 6 8 15 20

選擇排序

思路:遍歷第i到第n個,找到i到n範圍內最小的數,然後放在i的位置。接著遍歷i+1到第n個,找到i+1到n範圍內最小的數,然後放在i+1的位置,重複執行下去,最後陣列從小到大排列。

public static void selectsort(int array)

} swap(array,index,i); }

}排序過程:

1 3 20 8 15 6

1 3 20 8 15 6

1 3 6 8 15 20

1 3 6 8 15 20

1 3 6 8 15 20

1 3 6 8 15 20

插入排序

思路:如第0到5範圍內的數從小到大排列,第六個數記為temp,此時第temp比第5個數小,那麼第5個數往後退,接著再與第4個數比較,如果還是比第4個數小,那麼第4個數繼續後退,接著如果不小於第3個數,這個時候將temp存到4的位置 。總的來說,就是在乙個有序範圍內,插入乙個該範圍之外的數,隨著執行下,有序範圍逐漸擴大,最後整體有序。

public static void insert(int array)

array[j]=temp;

} }

排序過程:

3 6 20 8 15 1

3 6 20 8 15 1

3 6 8 20 15 1

3 6 8 15 20 1

1 3 6 8 15 20

希爾排序

思路:希爾排序是在插入排序的基礎上進一步改進的。

插入排序有可以改進的地方

插入排序每一次移動只能移動一位,而希爾排序可以按步長移動。

插入排序在對幾乎已經排好序的資料操作時,效率高,即可以達到線性排序的效率。

所以針對這兩點,希爾排序通過將比較的全部元素分為幾個區域來提公升插入排序的效能。這樣可以讓乙個元素可以一次性地朝最終位置前進一大步。然後演算法再取越來越小的步長進行排序,演算法的最後一步就是普通的插入排序,但是到了這步,需排序的資料幾乎是已排好的了(此時插入排序較快)。

總的來說,希爾排序的最後一步是插入排序,但是在插入排序之前,實現了基本有序。

public static void shell(int array)

array[p]=temp; }

}gap=gap/2; }

}快速排序

最核心的思想是實現在乙個範圍內,以n為基準點,左邊的數不大於基準點,右邊的數不小於基準點。接下來左邊的作為乙個整體,同樣實現上面的要求,右邊的作為乙個整體也實現上面的要求(左邊的數不大於基準點,右邊的數不小於基準點)。自頂向下執行下去,最後區域性有序實現整體有序。

public static void quicksort(int array,int start,int end)

} public static int findpoint(int array,int start,int end)

if(start

while(start

if(start

} array[start]=temp;

return start; }

排序過程

1 3 2 6 8 12 7 15 20

1 3 2 6 8 12 7 15 20

1 2 3 6 8 12 7 15 20

1 2 3 6 7 8 12 15 20

1 2 3 6 7 8 12 15 20

1 2 3 6 7 8 12 15 20

常用的排序演算法

排序方式 插入排序 直接插入排序 shell排序 選擇排序 直接選擇排序 堆排序交換排序 氣泡排序 快速排序 歸併排序 分配和索引排序 基數排序 桶式排序 include using namespace std 直接插入排序 arr為待排陣列,n為陣列長度 void insertsort int a...

常用的排序演算法

1.氣泡排序 private static void bubblesort int a 列印氣泡排序的結果 for int i 0 i2.快速排序 public class quicksort qs.data data qs.sort 0,qs.data.length 1 qs.display 3....

常用的排序演算法

1.氣泡排序 時間複雜度 o n 2 氣泡排序演算法的運作如下 從後往前 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上...