C++之sort函数】的更多相关文章

作者:fengcc 原创作品 转载请注明出处 前几天阿里电话一面,被问到STL中sort函数的实现.以前没有仔细探究过,听人说是快速排序,于是回答说用快速排序实现的,但听电话另一端面试官的声音,感觉不对劲,知道自己回答错了.这几天特意看了一下,在此记录. 函数声明 #include <algorithm> template< class RandomIt > void sort( RandomIt first, RandomIt last ); template< class…
今天来谈一谈sort()函数,sort() 方法用于对数组的元素进行排序,用法为arrayObject.sort(sortby):括号中的为可选参数,准确来说应该是一个函数,这个函数用来规定排序方法,不然sort怎么知道你想怎么排,从大到小还是从小到大,你不跟它说它只能按它自己的方法排,如果你对它不熟悉的话,排出来的结果分分钟让你懵逼,需要说明的是,它是在原数组上排序的,不生成副本. 排序方法:如果你不给它指定方法的话,它会按照字符编码的顺序进行排序,对数字的话排出来基本没什么卵用,所以你要提供…
http://blog.163.com/yuhua_kui/blog/static/9679964420142195442766/ 先说明一下:qsort和sort,只能对连续内存的数据进行排序,像链表这样的结构是无法排序的. 首先说一下, qsort qsort(基本快速排序的方法,每次把数组分成两部分和中间的一个划分值,而对于有多个重复值的数组来说,基本快速排序的效率较低,且不稳定).集成在C语言库函数里面的的qsort函数,使用 三 路划分的方法解决排序这个问题.所谓三路划分,是指把数组划…
一.qsort()函数 原型:_CRTIMP void __cdecl qsort (void*, size_t, size_t,int (*)(const void*, const void*)); 参数解释:1.待排序数组首地址:2.数组中待排序元素数量:3.各元素的占用空间的大小:4.指向函数的指针,用于确定排序的顺序. 说明:qsort函数是ANSI C标准中提供的,其声明在stdlib.h文件中,是根据二分法写的,时间复杂度为O(n*logn). qsort要求提供比较函数用来确定排序…
x=[1,2,3] x.sort()对的,x这个都变了 y=x.sort()错误 y=sorted(x)对的,x拍好序的一个副本 python中用匿名函数和自定义函数排序:(很奇怪的是比较函数返回的是两个值相减就可以,比较大小就不可以 class Interval(object): def __init__(self, s=0, e=0): self.start = s self.end = e def mycmp(self,n1,n2): return n1.start-n2.start; d…
原文链接:http://blog.csdn.net/csust_acm/article/details/7326418 sort函数的用法 做ACM题的时候,排序是一种经常要用到的操作.如果每次都自己写个冒泡之类的O(n^2)排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错.STL里面有个sort函数,可以直接对数组排序,复杂度为n*log2(n).使用这个函数,需要包含头文件.    这个函数可以传两个参数或三个参数.第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一地…
一) sort函数用法 sort LISTsort BLOCK LISTsort SUBNAME LIST sort的用法有如上3种形式.它对LIST进行排序,并返回排序后的列表.假如忽略了SUBNAME或BLOCK,sort按标准字串比较顺序来进行(例如ASCII顺序).如果指定了SUBNAME,它实际上是个子函数的名字,该子函数对比2个列表元素,并返回一个小于,等于,或大于0的整数,这依赖于元素以何种顺序来sort(升序,恒等,或降序).也可提供一个BLOCK作为匿名子函数来代替SUBNAM…
(一)为什么要用c++标准库里的排序函数 Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n),执行效率较高! (二)c++标准库里的排序函数的使用方法 I)Sort函数包含在头文件为#include<algorithm>的c++标准库中,调用标准库里的排序方法可以不必知道其内部是如何实现的,只要出现我们想要的结果即可! II)Sort函数有三个参…
使用STL库sort函数对vector进行排序,vector的内容为对象的指针,而不是对象. 代码如下 #include <stdio.h> #include <vector> #include <algorithm> using namespace std; class Elm { public: int m_iSortProof; private: int __m_iValue; static int __m_iCnt; public: Elm(); int get…
MSDN中的定义: template<class RanIt>    void sort(RanIt first, RanIt last); //--> 1)template<class RanIt, class Pred>    void sort(RanIt first, RanIt last, Pred pr); //--> 2)头文件:#include <algorithm>using namespace std; 1.默认的sort函数是按升序排.…
题是比较水的啦,但是好久没有用sort函数啦,有点生疏^...^ #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; struct shu{ int num,ord; }p[]; int cmp(shu x,shu y) { if(x.num==y.num){ return x.ord<y.ord; } else…
先说明一下qsort和sort,只能对连续内存的数据进行排序,像链表这样的结构是无法排序的. 首先说一下, qsort qsort(基本快速排序的方法,每次把数组分成两部分和中间的一个划分值,而对于有多个重复值的数组来说,基本快速排序的效率较低,且不稳定).集成在C语言库函数里面的的qsort函数,使用 三 路划分的方法解决排序这个问题.所谓三路划分,是指把数组划分成小于划分值,等于划分值和大于划分值的三个部分. 具体介绍:-^^ void qsort( void *base, size_t n…
C++之所以得到这么多人的喜欢,是因为它既具有面向对象的概念,又保持了C语言高效的特点.STL 排序算法同样需要保持高效.因此,对于不同的需求,STL提供的不同的函数,不同的函数,实现的算法又不尽相同. 1.1 所有sort算法介绍 所有的sort算法的参数都需要输入一个范围,[begin, end).这里使用的迭代器(iterator)都需是随机迭代器(RadomAccessIterator), 也就是说可以随机访问的迭代器,如:it+n什么的.(partition 和stable_parti…
参考:http://blog.csdn.net/s030501408/article/details/5329477 0)与C标准库qsort的比较:http://bbs.csdn.net/topics/330202688 std::sort()比C标准库qsort快是肯定的,能快一倍,对于这一点的解释向来有两种,并且从STL的源码中也得到了确认. 一种是sort不是快速排序,而是多种排序的结合,这一点得到确认,STL的sort源码中可以看到快速排序.堆排序.归并排序等多种排序方式的结合,但是q…
(一)为什么要用c++标准库里的排序函数 Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n),执行效率较高! (二)c++标准库里的排序函数的使用方法 I)Sort函数包含在头文件为#include<algorithm>的c++标准库中,调用标准库里的排序方法可以不必知道其内部是如何实现的,只要出现我们想要的结果即可! II)Sort函数有三个参…
sort()函数与qsort()函数及其头文件 sort()函数是C++中的排序函数其头文件为:#include<algorithm>头文件: qsort()是C中的排序函数,其头文件为:#include<stdlib.h> 1.qsort()----六类qsort排序方法 qsort函数很好用,但有时不太会用比如按结构体一级排序.二级排序.字符串排序等. 函数原型: void qsort(void *base, size_t nelem, size_t width, int (*…
SGI  STL的list的函数的实现源码大致如下: //list 不能使用sort函数,因为list的迭代器是bidirectional_iterator, 而sort //sort函数要求random_access_iterator template<class T,class Alloc> void list<T,Alloc>::sort() { //如果元素个数小于等于1,直接返回 if(node->next==node||node->next->next…
向量调用sort函数排序,一般有三个参数,即为sort(v.begin(),v.end(),cmp),第三个传入的是比较函数的地址(函数名),决定你比较的性质,运用灵活 #include<iostream>#include<vector>#include<algorithm>#include<string>using namespace std;class Myclass{public: Myclass(int i, string s){ num = i,…
C++中的sort函数可以直接完美地取代Pas中十多行的快排代码,在这里,总结一下sort函数的用法: 首先是不加参数的情况: #include<cstdio> #include<algorithm> using namespace std; int main() { int n,a[10000]; scanf("%d",&n); for (int i=0; i<n; i++) scanf("%d",&a[i]); so…
头文件:algorithm 对于(整数/字符)数组进行比較时,可直接通过sort(a,a+n)或sort(a.begin(),a.end())进行排序,默认升序排列,须要高速实现降序时,有三种方案 1.反转升序数组(reserve函数) 2.反向迭代sort(a.rend(),a.rbegin()) 3.借助C++库函数,greater<类型>()降序       less<类型>()升序     头文件:functional 当对结构体进行排序时,须要自己写比較函数,曾了解qso…
说明:本文仅供学习交流,转载请标明出处,欢迎转载! STL封装了一个排序算法,该算法相应的头文件为#include<algorithm>,我们能够依据须要对一个数组进行排序或者降序. sort的函数原型为: void sort(b,e,pre=up),表示对[b,e)的元素进行排序,第三个參数为一个谓词,我们能够自己定义排序方式,默认排序方式为升序排序. 详细实现代码例如以下: #include<iostream> #include<vector> #include&l…
最近碰到这个sort函数,网上查了一些资料,感觉还是直接扔给我代码比较好理解些 要是像我一样的童鞋,建议看这里:http://www.cplusplus.me/265.html 个人认为很好理解..这里不多说什么废话.. 或许是因为之前学pascal的缘故,总是认为说是调用某函数是自己写一个函数或者过程. 今天这才领略到c++的STL库的巨大用途,这个sort也算是开始接触stl的一个标志吧,突然想到自己转c++之前还总是担心某些原因,现在想想转c++简直是明智之举,表示自己是一个巨懒无比的人.…
sort函数的用法(转载出处:http://blog.sina.com.cn/s/blog_6439f26f01012xw3.html) 做ACM题的时候,排序是一种经常要用到的操作.如果每次都自己写个冒泡之类的O(n^2)排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错.STL里面有个sort函数,可以直接对数组排序,复杂度为n*log2(n).使用这个函数,需要包含头文件.    这个函数可以传两个参数或三个参数.第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一地址…
很多人把redis当成一种数据库,其实是利用redis来构造数据库的模型,有那种数据库的味道.但是在怎么构建还是key和value的关系.根真正的关系型数据库还是不一样的.效率高,不方便:方便的,效率不高:又方便,效率又高的要花钱.php-redis里面的sort函数,在做web的时候取数据还是比较方便,有点关系型数据库的味道.在说sort前,先说一下前面漏的几个比较常用的函数. 1,keys 描述:查找符合给定模式的key.参数:匹配模式返回值:符合给定模式的key列表. 例1 2,mset…
用了这么久的sort排序,但是一直没有对他进行总结. 像我这样的蒟蒻有了sort排序就再也没有看过快排.冒泡排序.桶排序了...... sort的头文件<algorithm> 存在于C++标准库内的函数,我们其实并不需要知道他的原理,只要会用就行了;;; sort函数有三个参数 sort(a,b,c) a表示要排序的数组的起始位置 b表示要排序的数组的结束地址(最后一位要排序的地址) c是排序的方法,如果不写则默认从小到大排序 Sort函数使用模板: Sort(start,end,排序方法)…
在平常开发中我们经常会遇到对数组进行排序的场景,js给我们提供了sort方法可以对数组元素进行排序,默认是按ASCII字母表顺序排序,请看下面例子: var a = [1, 3, 2, 4];var b = ['b', 'a', 'c', 'd']; a.sort();b.sort(); console.log(a); // [1, 2, 3, 4]console.log(b); // ['a', 'b', 'c', 'd'] 但有些时候我们需要自己定义排序要求,这时候我们就可以给sort函数传…
最近在写一个算法的时候,把一些数据存在了pair中,并且需要根据pair中first或者second的值对这些数据进行排序.比如:输入数据(1,2).(4,2).(3,3).(2,1)根据first的值大小进行升序排序,输出(1,2).(2,1).(3,3).(4,2).经过思索之后得到的实现方法如下:首先将这些数据存在vector数组中,vector<pair<int,int>>vec;然后使用sort函数对数组进行排序,这里就涉及到了sort函数的使用了.下面是sort函数使用…
题目如下: A long-distance telephone company charges its customers by the following rules: Making a long-distance call costs a certain amount per minute, depending on the time of day when the call is made. When a customer starts connecting a long-distance…
linux内核中的sort函数,其实跟我们所说的qsort函数很像,我们来看看qsort: qsort 的函数原型是 void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*)); 参数:  1 .待排序数组首地址 2 .数组中待排序元素数量 3 .各元素的占用空间大小 4 .指向函数的指针,用于确定排序的顺序. 其中compare函数应写为: 1 2 3 4 int com…
Array 是所有数组的基类ArrayList 解决了所有Array 类的缺点    能动态扩容, 但是类型不安全的,而是会有装箱与拆箱的性能开销List<T> 则是解决了ArrayList 类的装箱,拆箱问题, 能够动态扩容,但是所有的顺序结构数据结构的缺点就是数据空间的开辟开销这三个类都是基于数组实现的, 并没有用到链表的实现.具体的源码可以通过.NET Reflector 来看.对于内置函数Sort 我一直比较好奇,分析着它的实现应该是快排实现的,分析了下List<T> 的S…