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

2021-10-11 04:44:16 字數 909 閱讀 3547

插入型排序:

一:直接插入排序

比較次數和移動次數與待排序序列的初始狀態有關

最好情況:序列有序 比較次數:n-1次 移動次數:0

最壞情況:序列逆序:比較次數 1+2+3+…+n_1 。

直接插入的特性:當陣列有序的時候,時間複雜度達到o(n)

//直接插入排序:

//時間複雜度:0(n^2)空間複雜度:0(1)

//穩定性:穩定。

public

static

int[

]insertionsort

(int

array)

for(

int i =

1; i < array.length;

++i)

else}}

return array;

}

二. 希爾排序

遞減增量排序

時間複雜度:o(n^2) 最好約為0(n^1.3)

//希爾排序

//思路:先進行分組操作然後進行插入排序。

//時間複雜度o(n^1.3 - 2) 空間 o(1)

//穩定性:不穩定

public

static

int[

]shellsort

(int

array)

//初始化增量 array.length/2 每一趟都後都除以二

for(

int gap = array.length /

2; gap >

0; gap /=2)

else}}

}return array;

}

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

直接插入排序是將元素按順序插入已經排好序的序列中。對於待插入的元素,如果比最後乙個元素還大,則不用處理。否則,從後邊元素開始比較,並順次後移,直到碰到元素小於或者等於該元素。設定第乙個元素位置為哨兵,用來存放待插入元素。include include include using namespace ...

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

直接插入排序 基本思想 假設待排序的數存放在陣列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 ...