它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
注意在找插入位置的时候同步进行数据的挪动。
#include <iostream>
#include <time.h>
#define size 10
using namespace std;
void insert_sort(int a[],int len)
{
int i, j, key;
for(i = 1; i < len; ++i){
key = a[i];
for(j = i-1; j >=0; --j)
{
if(a[j] > key)
a[j+1] = a[j];//为插入元素空出位置
else
break;
}
a[j+1] = key;
}
}
int main()
{
int a[size];
srand((unsigned)time(NULL));
for(int i=0;i<size;i++)
a[i]=rand()%20; //随机生成size个书并排序
for(int i=0;i<size;i++)
cout<<a[i]<<" ";
cout<<endl;
clock(); //计时
insert_sort(a,size);
cout<<"用时:"<<clock()<<"毫秒"<<endl;//得出排序时长
for(int i=0;i<size;i++)
cout<<a[i]<<" ";
return 0;
}