初級排序方法是最基本的排序方法,主要包括選擇排序、插入排序以及希爾排序。
選擇排序的原理是通過比較整個陣列,找到最小值,然後將最小值與陣列中第乙個位置的數字進行交換,依靠迴圈來完成對整個陣列的排序。對於乙個由n個元素組成的陣列,這種方法進行(n^2)/2次比較和n次交換,並且無論輸入是什麼情況,其比較和交換次數不變。
插入排序的原理則是比較該元素與其之前元素的大小,若偏小則交換位置,繼續與新位置之前的元素進行比較,直到偏大為止,同樣依靠迴圈來對整個陣列進行排序。這種方法十分依賴輸入,若輸入的就是一組排好序的陣列,則其進行n-1次比較和0次交換;若輸入是最壞情況,則進行(n^2)/2次比較和(n^2)/2次交換。但平均而言,進行(n^2)/4次比較和(n^2)/4次交換,,一般而言是快於選擇排序的。
希爾排序則在插入排序的基礎上更進一步。它是通過將乙個大陣列分割成幾個小陣列,每個小陣列的各個元素相隔h個元素,然後對每個小陣列進行插入排序,完成後縮小h重複上述步驟,直到h<1。
三種排序方法c++**如下:
templatevoid _swap(t *t, int i, int j) //交換兩個元素
templatevoid selection_sort(t *t) //選擇排序
}_swap(t, i, _min); //交換i元素和最小元素
}}templatevoid insertation_sort(t *t) //插入排序
for(int i = 1; i < n; i++) //如果t[j]=t[j-1]
}templatevoid shell_sort(t *t) //希爾排序
}
Java初級排序演算法 選擇排序 插入排序 希爾排序
package sort import edu.princeton.cs.algs4.in public class example private static boolean less comparable v,comparable w private static void exch comp...
插入 希爾 選擇排序
排序 一般是原地排序 in place 排序 預設情況下都是按非降序排序 穩定性 能保證排序過程中相等的資料的相對順序不變 1.插入排序 越接近有序,執行時間效率越高 減治演算法排序 直接插入排序,折半插入排序 一共需要進行size 1次插入 插入過程 每次把無序區間的第乙個數,在有序區間遍歷 從後...
冒泡 選擇 插入 希爾排序
include include include using namespace std template void print const t a,int n 氣泡排序 每次迴圈總是將最大元素移到隊尾 o n 2 穩定的排序演算法 templatevoid bubblesort t a,int n ...