#include<iostream>
using namespace std;
void insert_sort(int a[],int len){
for (int i=1;i<len;i++)//从第二个元素开始,把前面单独的一个看作有序
{
int v=a[i];
int j=i-1;
while (j>=0 && a[j]>v)
{
a[j+1]=a[j];
j--;
}
a[j+1]=v;
}
}
/*测试*/
int main()
{
int a[10]={12,12,13,30,56,99,1,78,3,56};
insert_sort(a,10);
for (int i=0;i<sizeof(a)/sizeof(a[0]);i++)
{
cout<<a[i]<<endl;
}
return 0;
}
使用迭代实现减治思想的直接插入排序。减治思想体现在:每次有序序列都会增加1,无序序列减少,问题规模常量减少。
实现过程:在有序的序列中,查找合适的位置,将该位置后的元素向后移动一位,将基准值放入合适位置。