把n個待排序的元素看成乙個有序表和乙個無序表,開始時有序表中只有乙個元素,無序表中有n-1個元素;每一趟排序過程都從無序表中取出第乙個元素,按順序去比較有效表(大到小)的資料,將它插入到有序表正確位置,使之成為新的有序表,重複n-1次完成整個排序過程。
插入排序的基本思想:給定陣列:int array=;
第一趟排序
從第二趟排序array[1]
與array[0]
比較,array[1]
<array[0]
,進行交換;
從第三趟排序array[2]
與array[1]
比較,
array[2]
<array[1]
,進行交換;接著
array[1]
與array[0]
比較,
array[1]
<array[0]
,進行交換;
從第i趟排序array[3]
與array[2]
比較,
array[3]
<array[2]
,進行交換;接著
array[2]
與array[1]
比較,
array[2]
<array[1]
,進行交換;接著
array[1]
與array[0]
比較,
array[1]
>array[0]
,不交換;
以此類推,從array[i]
與array[i-1]
比較,如果
array[i]
<array[i-1]
,進行交換;一直往前進行比較,直到出現
array[n-i]
>array[n-i-1]
,說明
array[n-i]
大於array[n-i-1]
前面的值;* 插入排序的實現
* @param array
* @param */
public
static
<
textends
comparable
<
t>>
void
insertionsort(t
array)
else
}*/// 改建方式
for(int j = i; j >
0&& array[j]
.compareto
(array[j-1]
)<
0; j--)}
}}
public
static
void
main
(string[
] args)
;insertionsort
(array)
; system.out.
println
(arrays.
tostring
(array));
// 1.隨機生成陣列,測試選擇排序 和 插入排序的時間比較
int n1 =
10000
; integer[
] array1 = sorttesthelp.
generaterandomarray
(n1,
0, n1)
; system.out.
println
("array1陣列:");
system.out.
println
(arrays.
tostring
(array1));
// 複製乙份
integer[
] array2 = arrays.
copyof
(array1, n1)
; system.out.
println
("隨機生成陣列,測試選擇排序 和 插入排序的時間比較:");
sorttesthelp.
testsort
("10萬數量的selectionsort"
, selectionsort:
:selectionsort, array1)
; sorttesthelp.
testsort
("10萬數量的insertionsort"
java 插入排序演算法
從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 如果該元素小於前面的元素 已排序 則依次與前面元素進行比較如果小於則交換,直到找到大於該元素的就則停止 如果該元素大於前面的元素 已排序 則重複步驟2 重複步驟2 4 直到所有元素都排好序 這是插入排序的...
插入排序演算法(java)
一 基本思想 將乙個資料插入到乙個有序的資料中,從而產生乙個新的 個數加一的有序資料。二 時間複雜度 插入排序演算法的時間複雜度是o n 2 三 排序過程如下 例如第一次排序 32 21,12,34,9,18,11,35 第二次排序 21,32 12,34,9,18,11,35 第三次排序 12,2...
Java排序演算法 插入排序
插入排序最簡單的排序方法之一。它是時間複雜度為o n 2 空間複雜度為o 1 的一種穩定排序演算法。基本思想 插入排序有n 1趟排序組成。假設在第p個位置的元素為待插入元素,對於p 1到p n 1趟,每一趟保證從位置到位置p的元素已經處於有序狀態。一開始預設a 0 為已排序陣列中的元素,從arr 1...