题目详情
编写函数,对整型数组进行递归插入排序。编写函数,输入、输出数组元素。编写主函数,调用函数输入、排序、输出元素。整数个数不超过100个。
输入:
在一行或多行中输入若干用空隔开的整数,输入-9999表示结束。
输出:
在一行中输出整数,用一个空格隔开,末尾无空格。
输入样例:
3 2 1 5 4 -9999
输出样例:
1 2 3 4 5
个人思路
见图
- 下面代码
#include <iostream>
using namespace std;
void REinsert(int *p,int n) //进行递归插入排序 n代表当前所需排序的元素的下标
{
if( *(p+n)==-9999 ) return ;
int i,temp=*(p+n); //temp暂存需比较的数
for(i=n-1;i>=0&&*(p+i)>temp;i--)
{
*(p+i+1)=*(p+i);
}
*(p+i+1)=temp;
REinsert(p,n+1); //到下标为n+1的元素开始排序
return ;
}
int Input(int *p)
{
int i=0;
cin>>*p;
while(*p!=-9999){
cin>>*++p;
i++;
}
return i; //返回有效的输入个数
}
void Output(int *p,int n)
{
if(n==0) return ;
cout<<p[0];
for(int i=1;i<n;i++)
cout<<' '<<p[i];
return ;
}
int main()
{
int *p = new int [100];
int *pt=p;
int n=Input(p);
REinsert(pt,0); //从下标为0的元素开始进行插入排序
Output(pt,n);
delete []pt;
return 0;
}