演算法學習之插入排序

2021-10-12 14:00:14 字數 1160 閱讀 5305

插入排序是一種最簡單的排序方法,對於少量元素的排序,它是乙個有效的演算法。

其實現過程使用雙層迴圈,外層迴圈每次「插入乙個新的元素」,內層迴圈將「新插入的數」與前面已排好序的部分進行比較,找到插空位置,形成新的有序數列。

插入排序的平均時間複雜度是 o(n^2),空間複雜度為常數階 o(1),具體時間複雜度和陣列的有序性也是有關聯的。

1、插入排序中,當待排序陣列是有序時,是最優的情況,只需當前數跟前乙個數比較一下就可以了,這時一共需要比較 n-1 次,時間複雜度為 o(n)。

2、最壞的情況是待排序陣列是逆序的,此時需要比較次數最多,最壞的情況是 o(n^2)

//插入排序

insertionsort

(int s,

int len)

else}}

}//交換

swap

(int s,

int i,

int j)

intmain()

;//陣列長度

int len=

sizeof

(arr)

/sizeof

(arr[0]

);insertionsort

(arr,len)

;for

(i=0

;i)return0;

}

//來自 插入排序|菜鳥教程

package runoob;

/** * 插入排序

*/public

class

insertionsort

}//核心**---結束

private

static

void

swap

(object[

] arr,

int i,

int j)

public

static

void

main

(string[

] args)

}}

演算法學習之插入排序

1.演算法思想 alg s idea 從左至右有序 第乙個位置只有乙個元素,當然有序 每次2 j n 將元素aj插入到有序的a 1.j 1 中,並使a 1.j 有序 直至j n 2.alg偽 類c,不可複製直接執行 insertion sort a 將a 1.n 有序 for j 2 to n do...

插入排序演算法學習

插入排序就如同手裡放了一堆紙牌,把紙牌從左到右進行排序。insert sort a for j 2 to n n為陣列a的長度 do key a j insert a j into the sorted sequence a 1.j 1 i j 1 while i 0 and a i key do ...

演算法學習 插入排序

插入排序 insertion sort 的演算法描述是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入 實現 public static void insertsort int array if array.length 0 r...