头文件: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函数使用总结的更多相关文章

  1. STL sort 函数实现详解

    作者:fengcc 原创作品 转载请注明出处 前几天阿里电话一面,被问到STL中sort函数的实现.以前没有仔细探究过,听人说是快速排序,于是回答说用快速排序实现的,但听电话另一端面试官的声音,感觉不 ...

  2. 神奇的sort()函数

    今天来谈一谈sort()函数,sort() 方法用于对数组的元素进行排序,用法为arrayObject.sort(sortby):括号中的为可选参数,准确来说应该是一个函数,这个函数用来规定排序方法, ...

  3. qsort函数、sort函数【转】

    http://blog.163.com/yuhua_kui/blog/static/9679964420142195442766/ 先说明一下:qsort和sort,只能对连续内存的数据进行排序,像链 ...

  4. C中的qsort函数和C++中的sort函数的理解与使用

    一.qsort()函数 原型:_CRTIMP void __cdecl qsort (void*, size_t, size_t,int (*)(const void*, const void*)); ...

  5. python 中的sort 和java中的Collections.sort()函数的使用

    x=[1,2,3] x.sort()对的,x这个都变了 y=x.sort()错误 y=sorted(x)对的,x拍好序的一个副本 python中用匿名函数和自定义函数排序:(很奇怪的是比较函数返回的是 ...

  6. sort函数用法

    原文链接:http://blog.csdn.net/csust_acm/article/details/7326418 sort函数的用法 做ACM题的时候,排序是一种经常要用到的操作.如果每次都自己 ...

  7. Perl Sort函数用法总结和使用实例

    一) sort函数用法 sort LISTsort BLOCK LISTsort SUBNAME LIST sort的用法有如上3种形式.它对LIST进行排序,并返回排序后的列表.假如忽略了SUBNA ...

  8. C++ sort函数

    (一)为什么要用c++标准库里的排序函数 Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于 ...

  9. 使用STL库sort函数对vector进行排序

    使用STL库sort函数对vector进行排序,vector的内容为对象的指针,而不是对象. 代码如下 #include <stdio.h> #include <vector> ...

  10. C++ algorithm 里的sort函数应用

    MSDN中的定义: template<class RanIt>    void sort(RanIt first, RanIt last); //--> 1)template< ...

随机推荐

  1. C++类成员常量

    由于#define 定义的宏常量是全局的,不能达到目的,于是想当然地觉得应该用const 修饰数据成员来实现.const 数据成员的确是存在的,但其含义却不是我们所期望的.const 数据成员只在某个 ...

  2. c#程序将excel文件转换成xml文件

    要程序你自己去组装去,我只写两个部分,一个是读Excel的部分,然后是写入到xml的1) 从指定的excel读出信息string strConn="provider=Microsoft.Je ...

  3. iOS中解析json多种方法

    我感觉JSON解析,重要的是JSON解析之后对结果的处理JSON解析后是个dictionary,但是字典中有可能包含字典和数组,数组中还可以包含字典.向客户端请求的返回数据解析下面就简单介绍一下JSO ...

  4. Usaco 2.3 Zero Sums(回溯DFS)--暴搜

    Zero SumConsider the sequence of digits from 1 through N (where N=9) in increasing order: 1 2 3 ... ...

  5. C函数调用与栈--代码真相

    前面详细的说了,C函数调用的过程中,栈的变化情况的原理部分,这里在看一下汇编代码的真正的实现. 有关前面的那一片博客,主要记住的就是函数调用时栈的变化,4+3+2的步骤: (1)设置栈帧边界 (2)开 ...

  6. myEclipse快捷键及其常用设置

    快捷键:    查找替换:ctrl + f    复制行: ctrl + alt + down    删除行: ctrl + d    插入行: shift + enter, ctrl + shift ...

  7. setInterval(code, time)中code传递参数办法

    1.使用setInterval的场景 有时我们需要隔一定的时间执行一个方法,这时就会用到setInterval,但是由于这个方法是浏览器模拟出的Timer线程,在调用我们方法时不能为其传递参数. 2. ...

  8. vagrant 入门1

    1. Vagrant功能:      Vagrant usesOracle's VirtualBox to build configurable, lightweight, and portable ...

  9. Nginx阅读笔记(二)之location的用法

    两个配置文件 一: server { listen 80; # # 在本机所有ip上监听80,也可以写为192.168.1.202:80,这样的话,就只监听192.168.1.202上的80口 ser ...

  10. ORA-00031: session marked for kill 标记要终止的会话

    原文转载处:http://moonsoft.itpub.net/post/15182/203828 一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长 ...