zoukankan      html  css  js  c++  java
  • 排序方法之标准库中的快排 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;

    }

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

  • 相关阅读:
    java 排序
    spring 收藏博文
    转载:一位软件工程师的6年总结
    网站
    jdk配置环境变量的方法
    推荐桌游
    js 猜数字游戏
    html简易计算器的前端代码
    (转载)float与double中的精度问题
    jiaxiang
  • 原文地址:https://www.cnblogs.com/riskyer/p/3249438.html
Copyright © 2011-2022 走看看