sort()函数详解 | 您所在的位置:网站首页 › sort-n-k › sort()函数详解 |
目录
前言使用sort实现比较函数cmp结构体数组的排序容器的排序
前言
顾名思义,sort()就是用来排序的函数,它根据具体情况使用不同的排序方法,效率较高。 一般来说,不推荐使用C语言中的qsort函数,原因是qsort用起来比较繁琐,涉及很多指针的操作。 而且sort在实现中避免了经典快速排序中可能出现的会导致实际复杂度退化到O(n2)的极端情况。 话不多说了,下面我们来了解一下sort()函数的使用。 使用sort需要的头文件 #include需要的其他东西: using namespace std;使用的方式如下: sort(首元素地址(必填), 尾元素地址的下一个地址(必填), 比较函数(非必填));比较函数可以根据自身需要填写,如果不写比较函数,则默认对前面给出的区间进行递增排序。 例子:对int型和double型数组排序 我们应该知道,如果需要对序列进行排序,那么序列中的元素一定要有可比性,因此需要制定排序规则来建立这种可比性。 特别是像结构体,本身并没有大小关系,需要人为制订比较的规则。 sort的第三个可选参数就是compare函数(一般写作cmp函数),用来实现这个规则。 实现比较函数cmp如果想要从大到小排序,则要使用比较函数cmp来 " 告诉 " sort何时要交换元素(让元素的大小比较关系反过来)。 现在定义了如下的结构体: struct student { int x,y; };如果想将结构体数组按照x从大到小排序,可以这样写cmp函数 bool cmp(student a,student b) { return a.x>b.x;//按x值从大到小对结构体排序 }结构体数组在排序时,必须写cmp函数来规定规则。 例子如下: |
CopyRight 2018-2019 实验室设备网 版权所有 |