用递归算法实现选择排序

今天有幸上了翁恺老师的课。有很多的收获,其中之一就是递归算法的理解。

感谢栋哥!

先贴代码,在代码中领会精髓。

#include<stdio.h>
int findmax(int a[],int begin,int end)
{
    int i;
    int ret =begin;
    for(i=begin+1;i<=end;i++)
    {
        if(a[i]>a[ret]) ret=i;
    }
    return ret;
}
void sort(int a[],int begin,int end)
{
    int t;
    if(begin<end)
    {
        int maxid=findmax(a,begin,end);
        t=a[maxid];
        a[maxid]=a[end];
        a[end]=t;
        sort(a,begin,end-1);
    }
}
int main()
{
    int a[10];
    int i,len;
    len=sizeof(a)/sizeof(a[0]);
    for(i=0;i<len;i++)
    scanf("%d",&a[i]);
    sort(a,0,len-1);
    for(i=0;i<len;i++)
    {
        printf("%d",a[i]);
    }
    printf("\n");
}

 

posted @ 2020-05-12 21:25  如梦的少年丶  阅读(681)  评论(0编辑  收藏  举报