简单选择排序(递归法)

函数接口定义:

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);//递归调用
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值