本关任务:插入排序的递归实现
一个数组有n个元素,假如前面n-1个元素已经排序好了,那么把第n个元素插入到前面n-1个元素中,使得数组有序排列,就是插入排序了。至于n-1个元素如何已经先排序好,那么我们可以假设前面n-2个元素已经排序好,把第n-1个元素插入到前面n-2个元素中。依次类推,直到只剩下一个元素,也就是第一个元素。排序完成。
测试输入:
4
2 3 1 4
预期输出:
1 2 3 4
#include<iostream>
using namespace std;
void Insert_Sort(int A[], int n)
{
int tmp,i=n-1;
if(n==0) return;
Insert_Sort(A,n-1);
while(i>=1&&A[i]<A[i-1])//比较
{
//在比较之后互换位置
tmp=A[i];
A[i]=A[i-1];
A[i-1]=tmp;
i--;
}
}
int main()
{
int n,i=0;
cin>>n;
int A[n];
for(i=0;i<n;i++)
cin>>A[i];
Insert_Sort(A,n);
for(int x=0;x<n;x++)
cout<<A[x]<<" ";
return 0;
}