插入型排序:
一:直接插入排序
比較次數和移動次數與待排序序列的初始狀態有關
最好情況:序列有序 比較次數: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 ...