非递归:
#include<iostream>
using namespace std;
void select(int *a,int len)
{
int min;
for(int i=0;i<len;i++)
{
min=i;
for(int j=i+1;j<=len;j++)
{
if(a[min]>a[j])
min=j;
}
if(min!=i)
swap(a[i],a[min]);
}
}
int main()
{
int a[10]={10,25,8,18,22,4,12};
select(a,6);
return 0;
}
递归:
#include<iostream>
using namespace std;
void select(int *a,int i,int j,int min,int len)
{
if(i==len)
return;
if(j<=len)
{
if(a[j]<a[min])
min=j;
select(a,i,j+1,min,len);
}
if(j>len)
{
if(min!=i)
swap(a[min],a[i]);
select(a,i+1,i+2,i+1,len);
}
}
int main()
{
int a[10]={10,25,8,18,22,4,12};
select(a,0,1,0,6);
return 0;
}
本文深入探讨了选择排序算法的两种实现方式:非递归和递归。非递归实现通过遍历数组找到最小元素并进行交换,而递归实现则通过递归调用完成排序过程。两种方法均能有效对数组进行排序。
2271

被折叠的 条评论
为什么被折叠?



