演算法探索 插入排序演算法 簡單插入排序 希爾排序

2021-09-25 03:46:54 字數 1015 閱讀 1372

常用的排序演算法分為

交換排序 ( 氣泡排序 / 快速排序 )   

插入排序 ( 簡單插入排序 / 希爾排序 )    

選擇排序 ( 簡單選擇排序 / 堆排序 )   

歸併排序    

基數排序 ( 桶排序 )    

插入排序 顧名思義,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入

依據深海的理解舉乙個簡單的例子:

未排序序列是:[5,9,8,4,2]

已排序序列是:暫時沒有.

第一次執行插入: 將5拿出來  放到已排序序列

執行後:

未排序序列是:[9,8,4,2]

已排序序列是:[5]

第二次執行插入: 將9拿出來, 從已排序序列從後向前掃瞄,發現對應的位置在5的後面

執行後:

未排序序列是:[8,4,2]

已排序序列是:[5,9]

第二次執行插入: 將8拿出來, 從已排序序列從後向前掃瞄,發現對應的位置在5和9的中間

執行後:

未排序序列是:[4,2]

已排序序列是:[5,8,9]

以此類推,最終排序完成

public int test() ;

int i,j,temp; //temp 正在執行插入的數

for(i=1;i=0;j--) else

} array[j+1]=temp;

} return array;

}

希爾排序呢就是簡單插入排序的公升級版,

原理如下:

1.在邏輯的層面,將陣列分成若干小陣列,然後排序

2.之後將分組的條件更改,分組跨度變小,然後再排序

3.迴圈往復,直到跨度降到1時,排序整個陣列.

該排序因為分組原因,相同大小的數可能順序顛倒.所以該排序方式為不穩定排序

public static void shellsort(int arr) 

} }

插入排序演算法

插入排序演算法 思想 把排序過程看作是序列單個有序擴充套件為整體有序的過程,即首先取序列第二個元素與第乙個元素比較,將其插入合適位置,再將第三個元素與前兩個元素比較,將其插入合適位置,如此進行,直到最後取第n個元素與前n 1個元素進行比較並將其插入合適位置。演算法 建立日期 2004 12 14 插...

演算法 插入排序

include include 插入排序 n 2為的效率。具體思想 將陣列分為兩部分,一部分是有序的,一部分為無序的 然後從無序中選取乙個數插入在有序的數中的恰當的位置,以此迭代,直到無序的數全部遍厲完畢 void insert sort int a,int n a j tmp break retu...

插入排序演算法

下面這段話摘自 一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 如果該元素 已排序 大於新元素,將該元素移到下一位置 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置 將...