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< ...
随机推荐
- SSH 配置日记
1 注意struts2-spring-plugin.jar的导入. Unable to load configuration. - action 异常.需要导入这个包 2 很久都跑不通的 ...
- Libev学习笔记4
这一节首先分析Libev的定时器部分,然后分析signal部分. 对定时器的使用主要有两个函数: ev_timer_init (&timeout_watcher, timeout_cb, .) ...
- c 有关N!阶乘的相关问题----陆续补充上来
第一个:求N!结果中末尾0的个数问题.思路是末尾0的产生 5*偶数,阶乘中偶数的个数肯定比5多,所以求出阶乘中5的个数就可以求出末尾0的个数. #include<stdio.h> in ...
- C#语言基础之运算符
运算符分类.优先级 运算符:一.数学运算符:+,-,*,/,++,-- 示例1: 示例2: 示例3: 1.递增运算符:++(1)前缀递增运算符 int x=4; x++;//输出结果,x的 ...
- c#程序添加其他网站的webservice引用。
前言: 有A网站,B网站两个网站独立运行.某一天,需要两个网站进行合作来完成一件事,比如用A网站接收一些数据进行处理,存入中转数据库,B网站定时去取数据进入自己的系统进行处理. 可能我们会先想到在B网 ...
- FreeCodeCamp:Return Largest Numbers in Arrays
要求: 右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新数组. 提示:你可以用for循环来迭代数组,并通过arr[i]的方式来访问数组的每个元素. 结果: l ...
- CentOS-6.3安装配置JDK-7或 JDK-6
链接地址:http://blog.csdn.net/shuixin536/article/details/8954000 http://www.cnblogs.com/zhoulf/archive/2 ...
- JS 获取星期几的四种写法
今天是星期几的4种JS代码写法,有需要的朋友可以参考一下 第一种写法 复制代码代码如下: var str = ""; var week = new Date().getDay() ...
- hdu 4465 Candy 2012 成都现场赛
/** 对于大数的很好的应用,,缩小放大,,保持精度 **/ #include <iostream> #include <cmath> #include <algorit ...
- ORA-00845 Oracle 启不来修改 MEMORY_TARGET
1.内存减小导致Oracle启动不了 Last login: Sun Nov 4 15:09:06 2012 from 192.168.5.222 [oracle@h1 ~]$ sqlplus ...