• 排序方法之标准库中的快排 qsort ()函数


    C标准库qsort()函数的用法(快排)

     使用快速排序例程进行排序

    头文件:stdlib.h

    用 法: void qsort(void *base, int  nelem, int  width, int (*fcmp)(const void*,const void *));

    参数: 1 待排序数组首地址

    2 数组中待排序元素数量

    3 各元素的占用空间大小

    4 指向函数的指针,用于确定排序的顺序

    其中comp函数应写为:

    int comp ( const void *a, const void *b )

    {

       return * ( int * ) a - * ( int * ) b;

    }

    上面是由小到大排序,return*(int *)b-*(int *)a; 为由大到小排序。

    对一个二维数组进行排序:

    int a[1000][2]; 其中按照a[0]的大小进行一个整体的排序,其中a[1]必须和a[0]一起移动交换。

    qsort ( a, 1000, sizeof ( int ) * 2, comp);

    int comp ( const void *a, const void *b )

    {

       return ( ( int * ) a ) [0] - ( ( int * ) b ) [0];

    }

    qsort函数代码示例

    #include<stdio.h>

    #include<stdlib.h>

    #define nmemb 7

    int compar(const void *a,const void *b)

      {

       //返回负数表示从达到小排列

        //返回正数表示从达到小排列

        int *aa =(int *)a,*bb=(int *)b;

         printf("%d %d",*aa,*bb);

        if(*aa > *bb) return 1;

         if(*aa == *bb) return 0;

       if(*aa < *bb) return -1;

      return 1;

      }

    int main()

    {

      int a[10]={10,9,6,3,8};

      int i=0;

     qsort(a,10,sizeof(int ),compar);

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

     printf("%d ",a[i]);

     return 0;

    }

    运用此函数还可以实现结构体和字符串的排序,在这里就不写了,百度上可以找到很多这样的例子啊!

  • 相关阅读:
    PHP 开发 APP 接口 学习笔记与总结
    Java实现 LeetCode 43 字符串相乘
    Java实现 LeetCode 43 字符串相乘
    Java实现 LeetCode 43 字符串相乘
    Java实现 LeetCode 42 接雨水
    Java实现 LeetCode 42 接雨水
    Java实现 LeetCode 42 接雨水
    Java实现 LeetCode 41 缺失的第一个正数
    Java实现 LeetCode 41 缺失的第一个正数
    Java实现 LeetCode 41 缺失的第一个正数
  • 原文地址:https://www.cnblogs.com/riskyer/p/3249438.html
Copyright © 2020-2023  润新知