那些花儿er 2017-06-15 14:27 采纳率: 100%
浏览 933
已采纳

C语言新手求助这个怎么写呀

自定义一个有10个元素int类型的一维数组:然后利用选择法进行从小到大排序以及从大到小排序。
要求:
1) int类型10元素一维数组,允许事先自定义初始化
2) 请使用自定义函数实现从小到大排序
3) 请使用自定义函数实现从大到小排序
4) 请使用自定义函数实现排序后的数组输出

  • 写回答

2条回答 默认 最新

  • 战在春秋 2017-06-15 21:32
    关注

    代码如下:

    #include<stdio.h>
    #include<stdlib.h>
    
    #define N 10
    
    void select_sort_min(int a[], int n);
    void select_sort_max(int a[], int n);
    void display(int a[], int n);
    
    void display(int a[], const int n)
    {
        int i;
        for (i = 0; i < n; i++)
        {
            printf("%d ", a[i]);
        }
        printf("\n");
    }
    //选择排序实现-----从小到大
    void select_sort_min(int a[], int n)//n为数组a的元素个数
    {
        //进行N-1轮选择
        for (int i = 0; i < n - 1; i++)
        {
    
            int min_index = i;
            //找出第i小的数所在的位置
            for (int j = i + 1; j < n; j++)
            {
                if (a[j] < a[min_index])
                {
                    min_index = j;
                }
            }
    
            //将第i小的数,放在第i个位置;如果刚好,就不用交换
            if (i != min_index)
            {
                int temp = a[i];
                a[i] = a[min_index];
                a[min_index] = temp;
            }
        }
    }
    
    //选择排序实现-----从大到小
    void select_sort_max(int a[], int n)//n为数组a的元素个数
    {
        //进行N-1轮选择
        for (int i = 0; i < n - 1; i++)
        {
    
            int max_index = i;
            //找出第i大的数所在的位置
            for (int j = i + 1; j < n; j++)
            {
                if (a[j] > a[max_index])
                {
                    max_index = j;
                }
            }
    
            //将第i大的数,放在第i个位置;如果刚好,就不用交换
            if (i != max_index)
            {
                int temp = a[i];
                a[i] = a[max_index];
                a[max_index] = temp;
            }
        }
    }
    
    int  main()
    {
        int num[N] = { 9,17,99,7,4,8,12,0,11,6 };
    
        printf("排序前: \n");
        display(num, N);
    
        select_sort_min(num, N);
        printf("从小到大排序:\n");
        display(num, N);
    
        select_sort_max(num, N);
        printf("从大到小排序: \n");
        display(num, N);
    
        return 0;
    }
    

    用心回答每个问题,如果对您有帮助,请采纳答案好吗,谢谢!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)
  • ¥15 如何解决MIPS计算是否溢出
  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理
  • ¥15 操作系统相关算法中while();的含义
  • ¥15 CNVcaller安装后无法找到文件
  • ¥15 visual studio2022中文乱码无法解决
  • ¥15 关于华为5g模块mh5000-31接线问题
  • ¥15 keil L6007U报错