排序算法,是編程中經常使用的算法,我經常聽說的有冒泡排序、插入排序、希爾排序、選擇排序等等
由於筆者並非計算機專業科班出身,加上天資一般,當時學習的時候,真是頭疼不已,那時候很多上說的也
不是特別清楚,后來搞明白了之后,時間一長,又忘了(哈哈)。所以總結一下,需要用時直接到博客園上
面去復制。
今天就說一下插入排序:插入排序的核心思想是:從頭開始,每次頭元素作為 “哨兵” 依次和后面的元素
進行比較,(假設從小到大排列)后面大的元素和“哨兵”比較,如果后面的元素比“哨兵”大則交換,每比較一
次,都會從比較位置,向首元素方向進行,因此,該排序算法效率並不高,時間復雜度為O(n2)

#include <stdio.h> #define SWAP(X,Y) X=X+Y;Y=X-Y;X=X-Y //按最壞的時間復雜度 int main(int argc, char *argv) { int a[10] = {10,9,8,7,6,5,4,3,2,1}; for (int i = 1; i < 10; i++) { int j = i; while ((j > 0) && a[j] < a[j - 1]) { SWAP(a[j], a[j - 1]); j -= 1; } } for (int i = 0; i < 10; i++) { printf("%d ",a[i]); } printf("\n"); }
程序在vs2015控制台上運行如下:

