第二章
算法基础
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; }