weixin_44091894
2020-12-25 09:32
采纳率: 88.9%
浏览 71

怎么将冒泡排序法的降序跟升序写进一个void sort函数里

程序功能】 给定整型数组int a[]={12, 13, 56, 78, 34, 47, 77, 94, 23, 63 }; 要求使用函数编程,实现在main函数中输入数值“0 ”,数组则降序排列,输入数值“1”,数组则升序排列,并在main函数中输出排序后的数组。 【编程要求】 通过排序法对数组进行进行升序或者降序排序; 排序在 void sort(int a[], int n)函数中完成,而不是升序与降序各写一个代码类似的函数; 将结果输出到屏幕上。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 502203305 2020-12-25 10:27
    已采纳
    #include<stdio.h>
    #include<stdlib.h>
    int increase(const void * a, const void * b)
    {
        return (*(int*)a) - (*(int*)b);
    }
    
    int decrease(const void * a, const void * b)
    {
        return (*(int*)b) - (*(int*)a);
    }
    
    void sort(int * arr, int len,int desc)
    {
        qsort(arr,len,sizeof(int),desc?decrease:increase);
    }
    
    int main()
    {
        int arr[] = {2,3,4,5,6,7,8};
        int len = sizeof(arr)/sizeof(int),i;
        sort(arr,len,1);
        for(i = 0 ; i < len ; i++)
        {
            printf("%d ",arr[i]);
        }
        sort(arr,len,0);
        printf("\n");
        for(i = 0 ; i < len ; i++)
        {
            printf("%d ",arr[i]);
        }
        printf("\n");
    }
    打赏 评论
  • 紫宇寰 2020-12-25 11:16

    嗯?那么麻烦?一行代码解决了啊

    Integer[] arr2 = Stream.of(arr).sorted().toArray(Integer[]::new);
    Integer[] arr2 = Stream.of(arr).sorted(Comparator.reverseOrder()).toArray(Integer[]::new);
    打赏 评论

相关推荐 更多相似问题