各大排序的簡介
下面來說說插入排序
插入排序裡面有兩個排序
直接插入排序
基本思想:在要排序的一組數中,假設前面(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次排序 各種狀...