插入排序 直接 和 希爾

2021-07-04 04:20:13 字數 1237 閱讀 9099

各大排序的簡介

下面來說說插入排序

插入排序裡面有兩個排序

直接插入排序

基本思想:在要排序的一組數中,假設前面(n-1)[n>=2] 個數已經是排

好順序的,現在要把第n個數插到前面的有序數中,使得這n個數

也是排好順序的。如此反覆迴圈,直到全部排好順序。

package sort;

public class insertsort ;

int temp = 0;

for (int i = 1; i < a.length; i++)

a[j + 1] = temp;

} for (int i = 0; i < a.length; i++)

} public static void main(string args)

}

還有乙個 希爾排序(最小增量排序)

演算法先將要排序的一組數按某個增量d(n/2,n為要排序數的個數)分成若干組,每組中記錄的下標相差d.對每組中全部元素進行直接插入排序,然後再用乙個較小的增量(d/2)對它進行分組,在每組中再進行直接插入排序。當增量減到1時,進行直接插入排序後,排序完成。

package sort;

/** * 希爾排序 (最小增量排序)

* * @author striver-zw

* */

public class shellsort ;

double d1 = a.length;

int temp = 0;

/*** 演算法先將要排序的一組數按某個增量d(n/2,n為要排序數的個數)分成若干組,每組中記錄的下標相差d.對每組中全部元素進行直接插入排序,

* 然後再用乙個較小的增量(d/2)對它進行分組,在每組中再進行直接插入排序。當增量減到1時,進行直接插入排序後,排序完成。

*/while (true)

a[j + d] = temp;}}

if (d == 1)

} for (int i = 0; i < a.length; i++)

} public static void main(string args)

}

**不是很複雜,基本都看得懂。

插入排序 (直接插入排序和希爾排序)

當插入第i i 1 個元素時,前面的src 0 src 1 src i 1 已經排好序,此時用src i 的排序碼與 src i 1 src i 2 的排序碼順序進行比較,找到插入位置即將src i 插入,原來位置上的元素順序後移 void insertsort int src,int n 直接插入...

插入排序 直接插入和希爾

插入排序主要包括 直接插入和希爾排序 直接插入排序 穩定,時間複雜度o n 2 從第二個元素開始,將後面的資料依次插入到前面有序的佇列中 void derectinsert int data,int len data j 1 value 以上演算法也可以在最前面插入乙個哨兵,讓他的值等於value,...

插入排序(直接插入排序 希爾排序)

直接插入排序 基本思想 假設待排序的數存放在陣列arr 1.n 中。初始時,arr 1 自成1個有序區,無序區為arr 2.n 從i 2起直至i n為止,依次將arr i 插入當前的有序區arr 1.i 1 中,生成含n個記錄的有序區。演算法複雜度 對於具有n個記錄的檔案,要進行n 1次排序 各種狀...