直接插入排序概念
直接插入插排的插入原理是:當插入第i(i >0)時,前面的arr[0],arr[1],……,arr[i-1]已經排好序。這時,用arr[i]的排序碼與arr[i-1],arr[i-2],…的排序碼依次順序進行比較,找到插入位置即將arr[i]插入,插入後其他原來位置上的元素向後順移。
也就是每次都把乙個待插入元素按照大小插入到前面已經排好序的恰當地方,直到全部元素插入完成。
測試**如下:
#include
void
show
(int arr,
int size)
printf
("\n");
}void
insertsort
(int arr,
int size)
// 結束迴圈
arr[j +1]
= tmp;
// arr[i]插入到正確的位置上
//列印每次排序結果
show
(arr, size);}
}int
main()
;int size =
sizeof
(arr)
/sizeof
(int);
// 列印原始資料
printf
("%d \n"
, size)
;// 列印排序後的資料
show
(arr, size)
;insertsort
(arr, size)
;return0;
}
**測試結果
時間複雜度分析時間複雜度:平均o(n^2),最好o(n), 最壞o(n^2)
空間複雜度:o(1) 只有一常數空間變數
演算法穩定性
穩定性:穩定 兩兩進行對比排序
直接插入排序
直接插入排序是一種最簡單的排序方法,它的基本思想是依次將每個記錄插入到乙個有序中去。就是說,第i i 1 遍整理時,a1,a2,ai 1已經是排好序的子串行 取出第i個元素ai,在已排好序的子串行為ai找到乙個合適的位置,並將它插到該位置上。易知上述排序當i 1時實際上為空操作,故可直接從i 2開始...
直接插入排序
直接插入排序的演算法思想 直接插入排序 straight insertion sort 的基本操作是將乙個記錄插入到已經排好序的有序表中,從而得到乙個新的 記錄數增 1 的有序表。根據該思想,編寫 如下 從已有序列的第0個記錄開始比較 public static void insertsort1 i...
直接插入排序
源文章url http student.zjzk.cn course ware data structure web paixu paixu8.2.1.1.htm 做過部分修改。1 基本思想 假設待排序的記錄存放在陣列r 1.n 中。初始時,r 1 自成1個有序區,無序區為r 2.n 從i 2起直至...