排序 插入排序 直接插入排序 希爾排序

2021-10-18 21:32:33 字數 1640 閱讀 2544

當前有一組待排序序列,大部分是有序的,請問哪種排序方式更適合?

答 : 直接插入排序

思想:[有序區間,無序區間]

每次執行操作:

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...