常見的排序演算法有:插入排序,希爾排序,氣泡排序,選擇排序,快速排序,歸併排序,堆排序。
此篇主要講述插入排序,演算法步驟:
1)將待排序序列第乙個元素看做是乙個有序序列,把第二個元素到最後乙個元素當成未排序系列
2)從頭到尾依次掃瞄未排序序列,將掃瞄到的每乙個元素插入到有序序列的適當位置(如果待插入的元素與有序序列中的某個元素相等,則將代插入元素插入到相等元素的後面)
**如下:
public class insertsort {
public static void sort (int a){
//將陣列a按公升序排列
for(int i=1;i0&&a[j]時間複雜度:在插入排序中,當待排序陣列是有序時,是最優的情況,只需要當前數跟前乙個比較一下就可以了,這時一共比較n-1次,時間複雜度為o(n),即元素集合越有序,插入排序的效率越高。最壞的情況是陣列是逆序的,此時需要比較的次數最多,總次數為1+2+3……+n,所以,插入排序最壞情況下的時間複雜度為o(n^2)。
空間複雜度:插入排序的空間複雜度為常熟o(1)
穩定性分析:該演算法是穩定的
C C 七大排序演算法 之 「插入排序」
排序 即將一組混亂的資料按從小到大或者從大到小的順序進行有序的排列出來。插入排序演算法 思路解答 它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,通常採用 in place 排序 即只需用到 o 1 的額外空間的排序 因而在從後向前掃...
七大排序演算法 插入排序及其優化
思路 初步 public static void insertsort int arr else arr j 1 tmp 將tmp放到 小於或等於tmp這個元素的後乙個位置 public static void swap int arr,int i,int j 複雜度分析 優化 二分查詢該元素要插入...
七大排序之直接插入排序
整個區間被分為有序區間和無序區間,可以讓陣列的第乙個資料充當有序區間,其他是無序區間,每次將無序區間的第乙個數和有序區間最後乙個數作比較,如果無序區間的數比有序區間的數小,從有序區間的最後乙個數開始比較,直到這個數大於有序區間的數或者下標是 0 停止 如果要比較的數大於有序區間的最後乙個數,則不比較...