第二章
算法基础
2.1插入排序
对于少量元素的排序,插入排序是个有效算法,工作方式类似于排序一手扑克牌。
每次从桌上拿一张牌并将它插入另一手中正确的位置,为找到正确位置,依此对
手中的牌进行比较,直到找出正确位置。
该算法是
原址排序。
原址排序:在排序算法中,如果输入数组中仅有常数个数元素需在排序过程中存
储在数组之外,则称排序算法是原址的。例如:插入排序,堆排序,快速排序。
伪代码:
INSERTION-SORT(A)
for j to A.length
key = A[j]
//将A[j]插入到排好序的A[1..j-1]
i = j - 1
while i > 0 and A[i] > key
A[i+1] = A[i]
i = i - 1
A[i+1] = key
C语言实现:
#include<stdio.h>
int main()
{
int i,j,key,a[10]; //key用于保存要比较的数字
for(i = 0;i<10;i++)
scanf("%d",&a[i]);
for(j = 1;j < 10;j++)
{
key = a[j];
i = j - 1;
while(i > -1&& key > a[i]) //找位置
{
a[i+1] = a[i];
i--;
}
a[i+1] = key; //插入该位置
}
for(i = 0;i<10;i++)
{ printf("%d ",a[i]);
}
return 0;
}