代码:
#include<iostream>
using namespace std;
int main(void){
int a[6]={2,4,6,1,3,0};//定义一个数组
int n = sizeof(a)/sizeof(int);//计算数组长度
for(int i=1;i<n;i++){//从第二个数开始比较
int key = a[i];//用key暂时存放待比较的值
int j = i - 1;//与待比较的值前一个值开始比较
while(j>=0&&a[j]>key){//继续向前比较
a[j+1]=a[j];//将较大的值放于后面
j--;//依次向前比较
}
a[j+1]=key;//最后没有比待比较的值小时,释放出key
}
}
例题:
原理:插入排序可以类比为一副扑克牌的排序,一堆待排序的扑克牌放在桌子上,左手拿排好的牌,右手开始从牌堆第一张(此时左手应该有一张牌用于比较)开始,到左手处比较,放插入到比这张牌都大的牌前面,然后依次执行上述步骤,在左手排出一副具有顺序的牌。上述例子可以用以下图表示(假设已经比较到第四个值):