當前有一組待排序序列,大部分是有序的,請問哪種排序方式更適合?思想:[有序區間,無序區間]答 : 直接插入排序
每次執行操作:
1.從無序區間抓取第一張牌
2.依次和有序區間的數進行比較【從後往前進行比較–也是個迴圈】
3.選擇合適的位置插入
時間複雜度:**實現:最壞情況(當資料逆序) o(n^2)
最好情況(當資料有序) o(n)
空間複雜度:o(1)
穩定性:穩定
public
class
directinsertsort
else
} array[j+1]
= temp;
//當j=-1時,這裡是array[0] = temp}}
public
static
void
main
(string
args)
;system
.out.
println
(arrays
.tostring
(array));
insertsort
(array)
;system
.out.
println
(arrays
.tostring
(array));
}}
希爾排序是對直接插入排序的優化
希爾排序中的增量序列中的值沒有除1之外的公因子,並且最後乙個增量值必須等於1
時間複雜度:最壞情況: o(n^2)空間複雜度:o(1)
穩定性:不穩定
public
class
xiersort
else
} array[j+gap]
= temp;}}
public
static
void
shellsort
(int
array)
;//增量陣列
for(
int i =
0; i < drr.length; i++)}
public
static
void
main
(string
args)
;shellsort
(array)
;system
.out.
println
(arrays
.tostring
(array));
}}
插入排序(直接插入排序 希爾排序)
直接插入排序 基本思想 假設待排序的數存放在陣列arr 1.n 中。初始時,arr 1 自成1個有序區,無序區為arr 2.n 從i 2起直至i n為止,依次將arr i 插入當前的有序區arr 1.i 1 中,生成含n個記錄的有序區。演算法複雜度 對於具有n個記錄的檔案,要進行n 1次排序 各種狀...
插入排序 直接插入排序 希爾排序
1.直接插入排序 兩個陣列,有序陣列和無序陣列。排序前 無序陣列裡面所有的值都是無序的,有序陣列沒有值 排序中 無序陣列中拿出乙個數,放到有序陣列當中,有序陣列拿到數,將其按照大小有序的插入到無序陣列中 排序後 無序陣列中沒有數,有序陣列中的數為有序的。假設有一組無序序列 r0,r1,rn 1。1 ...
插入排序 直接插入排序 希爾排序
一 直接插入排序 1.思想 直接排序法,可以分為兩個部分,一部分是有序的,一部分是無序的.從這個圖上,應該是能看清楚直接插入排序的思想了.將無序部分的第乙個與有序部分進行比較.從有序部分的後面向前面比較,然後不斷地挪動有序部分的資料的位置 static void insertsort listlis...