/****把待排序数组分成已经排序的和待排序的,每次从待排序数组中获取一个元素,找到它在已经排序的数组的位置,然后它后续元素后移,把这个元素插入。***/
demo如下:
#include<iostream>
using namespace std;
void InsertSort(int a[],int length)
{
for(int i=1;i<length;i++)
{
if(a[i-1]>a[i]) //如果已经排列元素最大值大于待排序元素
{
int j=i; //记录当前待排序的元素下标
int tmp=a[i]; //记录当前待排序的元素值
while(j>0 && a[j-1]>tmp) //找到这个待排序元素在已经排序数组中的位置,找到第一个小于这个元素的,那么这个元素下一个位置就是它所在位置咯
{
a[j]=a[j-1]; //已经排序的元素都整体后移
j--;
}
a[j]=tmp;
}
}
}
int main()
{
int a[]={1,2,4,5,3};
InsertSort(a,5);
for(int i=0;i<5;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}