程序填空题:简单选择排序(递归法)
简单选择排序(递归法)。
```c++
#include
#define N 1000
using namespace std;
void SelectSort(int a[],int n,int i)
{ int j,k;
if (@@[i==n-1](2)) return; //满足递归出口条件
else
{k=i; //k记录a[i..n-1]中最小元素的下标
for (j=i+1;j if (a[j] k=j;
if (k!=i) //若最小元素不是a[i]
swap(a[i],a[k]); //a[i]和a[k]交换
@@[SelectSort(a,n,i+1)](2);
}
}
void show(int A[],int n)
{
int i;
for(i=0;i if(i==0)
cout< else
cout<<" "<}
int main()
{
int A[N];
int i,n;
cin>>n;
for(i=0;i cin>>A[i];
SelectSort(A,n,0);
show(A,n);
return 0;
}
```
### 输入样例:
第一行输入一个数n,接下来输入n个数。
```in
7
24 53 45 45 12 24 90
```
### 输出样例:
输出按升序排序的结果。
```out
12 24 24 45 45 53 90
```
答案:
第1空:i==n-1
第2空:SelectSort(a,n,i+1)
```c++
#include
#define N 1000
using namespace std;
void SelectSort(int a[],int n,int i)
{ int j,k;
if (@@[i==n-1](2)) return; //满足递归出口条件
else
{k=i; //k记录a[i..n-1]中最小元素的下标
for (j=i+1;j
if (k!=i) //若最小元素不是a[i]
swap(a[i],a[k]); //a[i]和a[k]交换
@@[SelectSort(a,n,i+1)](2);
}
}
void show(int A[],int n)
{
int i;
for(i=0;i
cout< else
cout<<" "<}
int main()
{
int A[N];
int i,n;
cin>>n;
for(i=0;i
SelectSort(A,n,0);
show(A,n);
return 0;
}
```
### 输入样例:
第一行输入一个数n,接下来输入n个数。
```in
7
24 53 45 45 12 24 90
```
### 输出样例:
输出按升序排序的结果。
```out
12 24 24 45 45 53 90
```
答案:
第1空:i==n-1
第2空:SelectSort(a,n,i+1)