插入排序是一種最簡單的排序方法,對於少量元素的排序,它是乙個有效的演算法。
其實現過程使用雙層迴圈,外層迴圈每次「插入乙個新的元素」,內層迴圈將「新插入的數」與前面已排好序的部分進行比較,找到插空位置,形成新的有序數列。
插入排序的平均時間複雜度是 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...