C/C++中qsort()以及sort()的用法

最近学弟们问快速排序的比较多,今天自己就做一下总结,快速排序在库函数里面有现成的,不用自己实现,调用一下就可以达到自己想要的结果,掌握以后就可以完全摒弃冒泡和选择了,并且时间复杂度也从O(n*n)提升到O(n*log(n)),

先说C中的qsort():

  头文件:#include<stdlib.h>,

  调用参数:qsort(排序首地址,需排序元素个数,需排序元素大小,定义排序方式的函数名);

  1,对int型数组a[n]排序:

    int cmp (const void *a, const void *b)
    {
      return *(int *)a - *(int *)b;
    }//升序

    int cmp (const void *a, const void *b)
    {
      return *(int *)b - *(int *)a;
    }//降序

  2,对字符串数组a[n]排序:

    int cmp (const void *a, const void *b)
    {
      return strcmp((char *)a, (char *)b);
    }//升序

    int cmp (const void *a, const void *b)
    {
      return strcmp((char *)b, (char *)a);
    }//降序

  3,对结构体数组a[n]排序

    struct node
    {
      int x, y;
    };

    int cmp (const void *a, const void *b)
    {
      node *c = (node *)a;
      node *d = (node *)b;
      return c->x - d->x;
    }//按照a[i].x升序排列

    int cmp (const void *a, const void *b)
    {
      node *c = (node *)a;
      node *d = (node *)b;
      return d->x - c->x;
    }//按照a[i].x降序排列

    ps:结构体的二级排序只需要再加上一个if条件语句即可。

    以上所有的排序函数,使用时都是调用qsort(a, n, sizeof(a[0]), cmp);

C++中的sort函数:其实有时候sort函数比qsort函数还要稍微快那么一点,并且用起来比较方便,所以在这里做一下广告,有排序用sort函数,不能用创造机会也要用!!!

  头文件:#include<algothrim>

  调用参数:sort(排序首地址,排序末地址,定义排序方式的函数名(可有可无)),如果没有排序方式默认按照升序排列。

  现在我们就解决一下如何按照降序方式排列。

  1,对int型数组a[n]降序排:

  bool cmp (int a, int b)
  {
    return a > b;
  }//降序

  2,对string型的数组a[n]排序:

  bool cmp (string a, string b)
  {
    return a > b;
  }//降序

  3,对结构体型的数组a[n]排序:

  bool cmp (node a, node b)
  {
    return a.x > b.x;
  }//降序

  ps:如果对结构体进行二级排序,只需在排序函数里面加上if语句。

  以上所有的排序函数调用的时候都是用:sort(a, a+n, cmp);

  其实强大的stl库给我们提供了辣么多的函数,有一些在这里还是很有用的,比如:

  sort(a, a+n, less<数据类型>());//对指定的数据类型升序排

  sort(a, a+n, greater<数据类型>());//对指定的数据类型降序排

因为C/C++给我们提供给了太多的数据类型,所以上面只是一些常见的数据类型的排序。

    

    

时间: 2024-10-01 07:13:03

C/C++中qsort()以及sort()的用法的相关文章

qsort和sort函数用法区别

区别 sort是qsort的升级版,如果能用sort尽量用sort,使用也比较简单,不像qsort还得自己去写 cmp 函数, 只要注明  使用的库函数就可以使用,参数只有两个(如果是普通用法)头指针和尾指针:  默认sort排序后是升序,如果想让他降序排列,可以使用自己编的cmp函数 bool compare(int a,int b) {   return a>b; //降序排列,如果改为return a<b,则为升序 } sort(*a,*b,cmp); sort 使用时得注明:using

C语言qsort和C++sort的用法小结和区别比较

第一项: qsort: (只是些概念,了解一下就可以) 基本快速排序的方法,每次把数组分成两分和中间的一个划分值,而对于有多个重复值的数组来说,基本排序的效率较低.集成在C语言库函数里面的的qsort函数,使用 三 路划分的方法解决这个问题.所谓三路划分,是指把数组划分成小于划分值,等于划分值和大于划分值的三个部分. 函数对buf 指向的数据按升序排序. 使用方法: void qsort( void *base, size_t num, size_t width, int (__cdecl *c

排序中的qsort和sort

原文:http://www.cnblogs.com/ForeverJoker/archive/2013/05/25/qsort-sort.html 先说明一下qsort和sort,只能对连续内存的数据进行排序,像链表这样的结构是无法排序的. 首先说一下, qsort qsort(基本快速排序的方法,每次把数组分成两部分和中间的一个划分值,而对于有多个重复值的数组来说,基本快速排序的效率较低,且不稳定).集成在C语言库函数里面的的qsort函数,使用 三 路划分的方法解决排序这个问题.所谓三路划分

【转】python中List的sort方法(或者sorted内建函数)的用法

原始出处:http://gaopenghigh.iteye.com/blog/1483864 python列表排序 简单记一下python中List的sort方法(或者sorted内建函数)的用法. 关键字: python列表排序 python字典排序 sorted List的元素可以是各种东西,字符串,字典,自己定义的类等. sorted函数用法如下: Python代码   sorted(data, cmp=None, key=None, reverse=False) 其中,data是待排序数

python中List的sort方法的用法

python列表排序 简单记一下python中List的sort方法(或者sorted内建函数)的用法. 关键字: python列表排序 python字典排序 sorted List的元素可以是各种东西,字符串,字典,自己定义的类等. sorted函数用法如下: Python代码   sorted(data, cmp=None, key=None, reverse=False) 其中,data是待排序数据,可以使List或者iterator, cmp和key都是函数,这两个函数作用与data的元

python 中 sorted() 和 list.sort() 的用法

今天用python自带的sorted对一个列表进行排序, 在这里总结一下 只要是可迭代对象都可以用sorted . sorted(itrearble, cmp=None, key=None, reverse=False) =号后面是默认值 默认是升序排序的, 如果想让结果降序排列,用reverse=True 最后会将排序的结果放到一个新的列表中, 而不是对iterable本身进行修改. eg: 1, 简单排序 sorted('123456')  字符串 ['1', '2', '3', '4',

hive中order by,sort by, distribute by, cluster by作用以及用法

1. order by Hive中的order by跟传统的sql语言中的order by作用是一样的,会对查询的结果做一次全局排序,所以说,只有hive的sql中制定了order by所有的数据都会到同一个reducer进行处理(不管有多少map,也不管文件有多少的block只会启动一个reducer).但是对于大量数据这将会消耗很长的时间去执行. 这里跟传统的sql还有一点区别:如果指定了hive.mapred.mode=strict(默认值是nonstrict),这时就必须指定limit来

C++ sort函数用法

参考文档:http://hi.baidu.com/posinfo/item/dc3e73584c535cc9d2e10c27 C++ sort函数用法 FROM:http://hi.baidu.com/blackdemonfish/blog/item/e2c1d655d702a45ed0090652%2Ehtml 最近算法作业经常需要排序.偶是一个很懒的人,于是一直用C++的sort进行排序---不少同志对此心存疑虑,所以今天就写一写sort的用法.声明:此用法是从某大牛的程序中看到的,其实偶只

qsort与sort

快排是我们平常敲代码和比赛的时候     经常使用到的方法 qsort是函数库中自带的函数    这是一个标准的快排函数 而sort比qsort更是好用    sort对于不同大小的数组   会使用不同的排序方法 所以我在使用sort之后   就没有使用过qsort了 我今天在这回顾一下qsort 和sort 的使用方法 qsort排序方法(升序) 一.对int类型数组排序 int num[10010]; int cmp ( const void *a , const void *b ) { r