函数接口定义:
void SelectSort(int a[],int n,int i);
在a[i..n-1]中找最小元素。
#include <iostream>
#define N 1000
using namespace std;
void SelectSort(int a[],int n,int i);
void show(int A[],int n)
{
int i;
for(i=0;i<n;i++)
if(i==0)
cout<<A[i];
else
cout<<" "<<A[i];
}
int main()
{
int A[N];
int i,n;
cin>>n;
for(i=0;i<n;i++)
cin>>A[i];
SelectSort(A,n,0);
show(A,n);
return 0;
}
/* 请在这里填写答案 */
这道题用递归的方法进行排序,这里原函数定义了一个a数组,n个数,i是开始的下标。大家可能会疑惑为什么是start==n-1就结束,因为在选择排序中我们只进行n-1次操作,但是下标是从0开始的,所以最后结束的i是n-2,经过+1变成了n-1。这样就很好理解了
void SelectSort(int a[],int n,int start)//start是开始的下标
{
if(start==n-1)//结束的下标是n-1
return;
for(int i=start+1;i<n;i++)//这里是从最开始的下标+1开始于下标进行比较
{
if(a[i]<a[start])//交换
swap(a[i],a[start]);//这里是c++的交换
}
SelectSort(a,n,start+1);//递归调用
}