插入排序(insertion-sort)的演算法描述是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入
**實現
public static void insertsort(int array){
if(array.length==0)
return array;
for(int i =0;iint key = array[i]; //獲取插入的值;
int end = i-1;
while(end>=0 && keyarray[end+1]=array[end];
end --;
array[end+1]=key;
【效能分析】
元素集合越接近於有序,直接插入排序演算法的時間效率就越高,也就是說插入排序適用於處理資料量比較少或者部分有序的資料
1)時間複雜度
對於n個數字,首先我從最外層的for迴圈要進行n次,然後裡面的while迴圈是根據i決定的,i=0時,不進入迴圈;i=1時迴圈1次;i、=2時,迴圈2次;i=3時迴圈3次,.....i=n-1時迴圈n-1次,則加起來就是1+2+3+4+......+n-1=,根據大o漸進法複雜度計算規則,保留最高端,並去掉係數,那麼時間複雜度為(最壞情況),最好的情況是陣列中各元素都已序,則時間複雜度為,那麼平均情況下次數為,所以綜上,直接排序的時間複雜度為。
(2)空間複雜度
空間複雜度為o(1),原因只建立了乙個物件key
(3)穩定性
是穩定的,因為在比較的時候,如果兩個數相等的話(對比看上圖中兩個23),不會進行移動,前後兩個數的次序不會發生改變
插入排序演算法學習
插入排序就如同手裡放了一堆紙牌,把紙牌從左到右進行排序。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 是一種簡單直觀且穩定的排序演算法。如果有乙個已經有序的資料序列,要求在這個已經排好的資料序列中插入乙個數,但要求插入後此資料序列仍然有序,這個時候就要用到一種新的排序方法 插入排序法,插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從...
演算法學習 插入排序 Java
插入排序是演算法入門的基礎演算法之一,它的原理類似於撲克牌插入的過程。1 從第二個位置逐個與前面元素進行比較 2 逐步替換position位置 3 直到找到比當前元素小的元素,將當前元素放到position位置上 具體 過程 public class insertsort insertsort ar...