C++sort函数使用总结
头文件:algorithm
对于(整数/字符)数组进行比較时,可直接通过sort(a,a+n)或sort(a.begin(),a.end())进行排序,默认升序排列,须要高速实现降序时,有三种方案
1.反转升序数组(reserve函数)
2.反向迭代sort(a.rend(),a.rbegin())
3.借助C++库函数,greater<类型>()降序 less<类型>()升序 头文件:functional
当对结构体进行排序时,须要自己写比較函数,曾了解qsort的都知道,C中的qsort排序函数写起来比較麻烦,由于传入的类型是const void * ,函数内部还须要进行强制转换,而sort仅仅需正常传入数据进行比較就可以。
eg:
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<algorithm>
#include<functional>
#include<string>
using namespace std; typedef struct node{
int x,y,z;
}node;
node s[10];\
int cmp(node a,node b)
{
if(a.x!=b.x)return a.x<b.x;
else if(a.y!=b.y)return a.y<b.y;
else return a.z<b.z;
}
int main()
{
srand((unsigned)time(NULL));
for(int i=0;i<10;i++)
{
s[i].x=rand()%5;
s[i].y=rand()%10;
s[i].z=rand()%20;
}
for(i=0;i<10;i++)
{
cout<<s[i].x<<" "<<s[i].y<<" "<<s[i].z<<"\n";
}
sort(s,s+10,cmp);
cout<<"\n\n";
for(i=0;i<10;i++)
{
cout<<s[i].x<<" "<<s[i].y<<" "<<s[i].z<<"\n";
}
return 0;
}
这里进行了结构体的多级排序。
当对字符串数组进行排序时,能够利用C中的strcmp返回自己定义函数结果。
对于String,其能够如同数组一样使用,但不能利用C字符串函数,可使用C++标准库字符串函数。
除了,结构体,字符串数组,sort函数都能够利用C++标准函数实现高速排序,包含pair,vector等类型,未来掌握的更加完好了再继续本文总结。
补:
当我们从0到n-1向数组中输入数据时,排序时sort(a,a+n),当我们须要对当中的部分排序时,仅仅须要sort(a+x,a+n),x>=0(0时是全排序)排序后的结果将以a+x为起点存入。
当我们从1到n向数组中输入数据时,排序时sort(a+1,a+n+1),当我们须要对当中的部分排序时,仅仅须要sort(a+x,a+n+1),x>=1,排序后的结果将以a+x为起点存入。
C++sort函数使用总结的更多相关文章
- STL sort 函数实现详解
作者:fengcc 原创作品 转载请注明出处 前几天阿里电话一面,被问到STL中sort函数的实现.以前没有仔细探究过,听人说是快速排序,于是回答说用快速排序实现的,但听电话另一端面试官的声音,感觉不 ...
- 神奇的sort()函数
今天来谈一谈sort()函数,sort() 方法用于对数组的元素进行排序,用法为arrayObject.sort(sortby):括号中的为可选参数,准确来说应该是一个函数,这个函数用来规定排序方法, ...
- qsort函数、sort函数【转】
http://blog.163.com/yuhua_kui/blog/static/9679964420142195442766/ 先说明一下:qsort和sort,只能对连续内存的数据进行排序,像链 ...
- C中的qsort函数和C++中的sort函数的理解与使用
一.qsort()函数 原型:_CRTIMP void __cdecl qsort (void*, size_t, size_t,int (*)(const void*, const void*)); ...
- python 中的sort 和java中的Collections.sort()函数的使用
x=[1,2,3] x.sort()对的,x这个都变了 y=x.sort()错误 y=sorted(x)对的,x拍好序的一个副本 python中用匿名函数和自定义函数排序:(很奇怪的是比较函数返回的是 ...
- sort函数用法
原文链接:http://blog.csdn.net/csust_acm/article/details/7326418 sort函数的用法 做ACM题的时候,排序是一种经常要用到的操作.如果每次都自己 ...
- Perl Sort函数用法总结和使用实例
一) sort函数用法 sort LISTsort BLOCK LISTsort SUBNAME LIST sort的用法有如上3种形式.它对LIST进行排序,并返回排序后的列表.假如忽略了SUBNA ...
- C++ sort函数
(一)为什么要用c++标准库里的排序函数 Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于 ...
- 使用STL库sort函数对vector进行排序
使用STL库sort函数对vector进行排序,vector的内容为对象的指针,而不是对象. 代码如下 #include <stdio.h> #include <vector> ...
- C++ algorithm 里的sort函数应用
MSDN中的定义: template<class RanIt> void sort(RanIt first, RanIt last); //--> 1)template< ...
随机推荐
- 基于Visual C++2013拆解世界五百强面试题--题6-double类型逆序
请设计一个函数,不许用到字符串函数,用数学运算,将double类型数据转换,例如123.456转换成654.321 首先想到依次提取他的每一个位数,然后进行运算,移动每一位数到相应位置,结果相加就能逆 ...
- linux下c/c++方式访问curl的帮助手册
自:http://blog.chinaunix.net/u1/47395/showart_1768832.html 有个业务需求需要通过curl 代理的方式来访问外网 百度了一把,测试可以正常使用.记 ...
- Hope
透过希望的窗棂,在阴霾的罅隙里也可以寻找阳光,看到未来的春暖花开. ——forever97
- Qt 4.6: A Quick Start to Qt Designer
Qt 4.6: A Quick Start to Qt Designer A Quick Start to Qt Designer Using Qt Designer involves four ba ...
- MySql 小问题集合
- 使用MySql通过SpringFramework来自动建表, 服务器用的是Tomcat, 在server.xml和context.xml中均正确配置了jdbc datasource. 编译通过, ...
- 类似jquery的一个demo
通过以下的demo,可以大体知道jquery的一些组织结构以及一些实现方法. 实际上jquery就是一个全局变量,只是在这个变量上添加了各种属性和方法. 首先我们要理解什么是匿名函数自执行,简单点就是 ...
- seajs + easyui [转]
* *content seajs+easyui使用 */ /** * 首先来看看在seajs中jquery和jquery插件如何使用 */ 1.jquery.js define(function(re ...
- matlab实现协同过滤之pdist、squareform
实现协同过滤算法的第一步是:计算用户或项目之间的相似度.接下来介绍pdist和squareform 用法: D = pdist(X) D = pdist(X,distance) D = pdist ...
- Qt中addStretch的有趣应用
今天在使用addStretch,布局的时候,发现addStretch竟然是可以平均分配的,有意思.比如: QVBoxLayout *buttonLayout = new QVBoxLayout; bu ...
- python 模块BeautifulSoup使用
BeautifulSoup是一个专门用于解析html/xml的库.官网:http://www.crummy.com/software/BeautifulSoup/ 说明,BS有了4.x的版本了.官方说 ...