一个数组有n个元素,假如前面n-1个元素已经排序好了,那么把第n个元素插入到前面n-1个元素,使得数组有序排列,就是插入排序了。
至于n-1个元素如何已经先排序好,那么我们可以假设前面n-2个元素已经排序好,把第n-1个元素插入到前面n-2个元素。
依次类推,直到只剩下一个元素,也就是第一个元素。排序完成。
代码如下:
#include<iostream>
using namespace std;
void Insert_Sort(int *A,int n)
{
int i,j,a;
for(i=0;i<n-1;i++)
{
j=i+1;
a=A[j];
while(a<A[j-1])
{
A[j]=A[j-1];
j--;
}
A[j]=a;
}
}
void main()
{
int A[4]={21,2,34,1};
Insert_Sort(A,4);
for (int i=0;i<4;i++)
{
cout<<A[i]<<endl;
}
system("pause");
}
附上递归版本的写法
#include<iostream>
using namespace std;
//把n插入前面已经排序好的数组
void Insert(int *a,int n)
{
int i=n-1;
int key=a[n];
while((i>=0)&&key<a[i])
{
a[i+1]=a[i];
i-