排序有很多种,今天总结一下一种初等排序——插入排序
插入排序是一种很容易想到的算法,它的思路与打扑克时排列手牌的方法很相似。好比,我们单手拿牌,然后要将牌从左到右、从大到小进行排序。此时我们需要将牌一张张抽出来,分别插入到前已经排好序的手牌中的适当位置。重复以上操作,直至所有的牌都完成排序。
(1)假设有已经排好序的一组数据;
(2)将数插入到已有的序列之中;
(3)若两数相等,则后插入的数排到后面;
(4)此算法的时间复杂度是O(n²);
插入排序的代码:
void InsertionSort(int a[], int n) {
int v=0,j=n;
for (int i = 0; i <= n - 1; i++) {
v = a[i];
j = i - 1;
while (j >= 0 && a[j] > v) {
a[j + 1] = a[j];
j--;
}
a[j + 1] = v;
}
}