写此博客记录下学习算法的过程。同时也希望可以给有同样兴趣的朋友一点点参考。
1.Insertion sort(插入排序)
输入:一列数字 a1, a2, a3,………,an.
输出:将输入的那列数字按照从小到大的顺序排列输出。a1<=a3<=a2<=…………an.
分析:
如上图所示,算法可以描述为:
for j ← 2 to length[A]
do key ← A[j]
i ← j - 1
while i > 0 and A[i] > key
do A[i + 1] ← A[i]
i ← i - 1
A[i + 1] ← key
C实现如下:
void insertSort(int a_intArray[],int length)
{
int i;
int j;
int key;
//Begin at the second one of the array and contrel the index of array.
for(i=1; i<length; i++)
{
key = a_intArray[i];
j = i-1;
// This loop for sort and insert an element of array.
while(j>=0 && a_intArray[j]>key)
{
a_intArray[j+1] = a_intArray[j];
j = j-1;
}
a_intArray[j+1] = key;
}
}