Java 插入排序演算法 (三)

2021-09-20 06:35:21 字數 2973 閱讀 5407

把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],進行交換;

第三趟排序
array[3]array[2]比較,

array[3]<array[2],進行交換;

接著array[2]array[1]比較,

array[2]<array[1],進行交換;

接著array[1]array[0]比較,

array[1]>array[0],不交換;

第i趟排序
以此類推,從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...