演算法思想
列如陣列:a=[10,4,1,3,2,0,5]; 如果要求公升序怎麼辦?
第一步:因為10是(a[0])在第乙個,所以10固定不動,讓4和10比,因為4小於10,所以,4和10交換位子,陣列變為a=[4,10,1,3,2,0,5]這1輪比較完畢。
第二步:將1與它的前乙個,也就是10比,因為1小於10,所以1和10交換位子,陣列變為a=[4,1,10,3,2,0,5]再將1與4比,比完之後1與4交換位子,陣列變為a=[1,4,10,3,2,0,5]這一輪比較完畢。
第三步:將3與10比,所以3與10交換位子,陣列變為a=[1,4,3,10,2,0,5] 將3與4比,所以3和4交換位子,得到a=[1,3,4,10,2,0,5]。將3與1比,因為3不比1小,所以位子不變,跳出迴圈,跳出這一輪比較。
第四步:將2與10…比較得到a=[1,2,3,4,10,0,5]第五步:將0與10比…比較得到a=[0,1,2,3,4,10,5]第六步:將5與10比…比較得到a=[0,1,2,3,4,5,10]插入排序結束。
/**
* 插入排序實現演算法
* 最好情況:o(n);---如果序列基本有序,則插入排序簡單有效
* 最壞情況:o(n^2);
* 優點:穩定
* 可以看成平時的摸牌
*/public
class
insertsort
;for
(int i=
0;i) system.out.
println()
;insertion_sort
(a,a.length)
;for
(int i=
0;istatic
void
insertion_sort
(int a,
int n)}}
}
排序演算法之插入排序
排序演算法之插入排序 1 插入排序的思想 假設在乙個有序序列中 e 0 e i 1 這i 個元素已經排好序,則當要將第 i 1個元素 e 插入該序列時,只需將第 i 1個元素與從 e 0 開始到e i 1 元素進行比較,當發現第 j個元素 e j 在序列中應在 e 前,且 e j 1 應在e 後時,...
排序演算法之插入排序
排序演算法之插入排序 1 插入排序的思想 假設在乙個有序序列中 e 0 e i 1 這i 個元素已經排好序,則當要將第 i 1個元素 e 插入該序列時,只需將第 i 1個元素與從 e 0 開始到e i 1 元素進行比較,當發現第 j個元素 e j 在序列中應在 e 前,且 e j 1 應在e 後時,...
排序演算法之插入排序
本節主要分析插入排序演算法的直接插入排序和希爾 shell 排序 又稱縮小增量排序 1.直接插入排序 該排序是最簡單的排序方法,其基本思想是 假設待排序的記錄存放在陣列r 1.n 中。初始時,r 1 自成1個有序區,無序區為r 2.n 從i 2起直至i n為止,依次將r i 插入當前的有序區r 1....