**實現
**精簡
插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的、個數加一的有序資料,演算法適用於少量資料的排序,時間複雜度為o(n^2)。實現過程
為了比較容易地理解插入排序,我們可以列出一組資料,比如:
1,5,4,3,7
我列出了兩種方法分別說明插入排序的實現過程,你可以選擇自己喜歡的方法:
第一種對於插入排序演算法來說:
1. 取出乙個數:
1
2. 取出第二個數5
,與1
比較,比1
小,插入第二位:
1, 5
3. 取出第三個數4
,依次與1,5
比較,所以4插入到第二位中,而5
向後推:
1, 4, 5
4. 取出第四個數3
,依次與1, 4,5
比較,所以3插入到第二位中,而4, 5
向後推:
1, 3, 4, 5
5 重複以上邏輯:
1, 3, 4, 5, 7
第二種
分析以上過程,我們發現排序演算法可以分成兩個步驟:
1. 遍歷資料表,每次取出乙個資料,與之前的資料比較。
2. 如果比之前的資料小,插入後將資料都向後推。
**實現
下面是插入排序的實現,之後是對**實現的簡略說明:
#include
void print(const int
*a, const int
length)
putchar('\n');
}void pushfront(int
*a, const int
length, const int key)
a[key] = tmp;
};void insertsort(int
*a, const int
length)
}print(a, i+1);
}}void main() ;
print(my_array, length);
insertsort(my_array, length);
}
個人分析
首先每次都取出乙個數,然後與之前的排序好的資料進行比較,所以我們這裡需要用到兩個迴圈:
for (int i = 0; i < length; i++)
}print(a, i+1);
}
實現插入**
void pushfront(int *a, const
intlength, const
int key)
a[key] = tmp;
}
**精簡void insertsort(int *a, const
intlength)
a[j+1] = tmp;}}
插入排序(C語言)
採用先確定數字然後找位置的方法。每次把最前面或最後面的沒有排好序的數字插入到已經排好序的數字中間合適的位置上。不斷把選擇好的數字和相鄰的數字做順序調整,直到它被放在合適的位置上。插入排序 include void insert sort int p num,int size int num 0,nu...
插入排序(c語言)
插入排序的基本思想是 每步將乙個待排序的紀錄,按其關鍵碼值的大小插入前面已經排序的檔案中適當位置上,直到全部插入完為止。插入排序示例 void printfbuff datatype a,size t n 列印陣列 printf n void insertsort datatype a,size t...
C語言 插入排序
include 插入排序 當一列已經有序,再有加入的資料時,適合使用插入排序,它是一種簡單直觀且穩定的演算法 不需要交換 void insert sort int arr,size t len 當前面沒有大於t的數時跳出迴圈 arr k t 將t插入此時的位置 void show arr int a...