Johnny


私信TA

用户名:algorithms

访问量:17069

签 名:

幸福是奋斗出来的!

等  级
排  名 358
经  验 5097
参赛次数 1
文章发表 29
年  龄 0
在职情况 学生
学  校 武汉科技大学
专  业

  自我简介:

解题思路:所谓选择法就是将n个数中最小的数与a[0]对换;再将a[1]-a[n]中最小的数与a[1]对换......没比较一轮,找出一个未经排序的数中最小的一个,共比较n-1轮,下面以5个数为例说明选择排序法的步骤:

a[0] a[1] a[2] a[3] a[4] 
3    6    1    9    4

1    6    3    9    4

1    3    6    9    4

1    3    4    9    6

1    3    4    6    9


注意事项:

参考代码:

#include<stdio.h>

int main()

{

    void choosesort(int *a,int n);   //函数声明

    void output(int *a,int n);      //函数声明

    int n,a[1000];     //本题要求n不小于1000,数组上限达不到容易运行出错

    int i;

    scanf("%d",&n);

    for(i=0;i<n;i++)

    {

        scanf("%d",&a[i]);

    }

    choosesort(a,n);     //调用排序函数

    output(a,n);      //调用输出函数

    return 0;

}

void choosesort(int *a,int n)   //选择排序算法,接受用指针或数组a[]

{

    int i,j,k,t;

    for(i=0;i<n-1;i++)        //n个数排序一共比较n-1趟

    {

        k=i;                  //记录每行的首元素

        for(j=i+1;j<n;j++)    //每少一趟,少比较一个数,所以从i+1开始

            if(a[j]<a[k])

                k=j;         //标记出剩余元素中的最小值

        t=a[k];a[k]=a[i];a[i]=t;  //将标记的值与首元素进行互换

    }

}

void output(int *a,int n)     //输出排好序的数组(指针法效率更高)

{

    int *p;

    for(p=a;p<a+n;p++)

        printf("%d ",*p);

}


 

0.0分

4 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区