选择排序
(1/1 分数)
题目描述
以递归方法实现选择排序(从小到大),为便于检查,要求输出每一次操作后的数组元素的排列状况。
输入格式两行输入,第一行表示数组元素个数,第二行表示数组元素,每个数之间以空格隔开
输出格式每一行为一次操作后的输出
样例输入
5 3 1 5 4 2样例输出
5 4 5 3 4 5 2 3 4 5 1 2 3 4 5代码框
#include <iostream>
using namespace std;
void sort(int *p,int n,int i);
int main(){
int n;
cin>>n;
int count=n;
int *p=new int[n];
for(int i=0;i<n;i++)
cin>>*(p+i);
sort(p,n,count);
delete []p;
return 0;
}
void sort(int *p,int n,int count){
if(n==0) return;
int max=*(p+n-1);
int position=n-1;
for(int j=n-1;j>=0;j--){
if(*(p+j)>max){
max=*(p+j);
position=j;
}
}
*(p+position)=*(p+n-1);
*(p+n-1)=max;
for(int j=n-1;j<count;j++)
cout<<*(p+j)<<" ";
cout<<endl;
sort(p,n-1,count);
}