`

库函数之sort

阅读更多

库函数之sort:

// 语法:   
#include <algorithm>  
void sort(iterator start,iterator end);  
void sort(iterator start,iterator end,StritWeakOrdering cmp);  
 
/*  
    1,sort()算法将在区间 [start,end)中的元素升序排列。 
    2,如果两个元素相等,不能保证其维持原来顺序。 
    3,默认使用<操作符,如果定义比较函数cmp,则使用cmp。 
    4,sort()算法内部是introsort(内观排序,自省的快排)算法 
    5,时间复杂度O(N*log(N)) (平均和最坏) 
      
    例子:(降序排列)  
    bool cmp( int a, int b )  
    { 
        return a > b; 
    }    
    sort( v.begin(), v.end(), cmp ); 
     
    附:introsort原理 
    (1)三点中值法。取中间大小的为PIVOT;  
    (2)分割函数,使用中间左右两部分:L< M < R, 返回M;  
    (3)左部分递归调用,右部分在循环中处理;  
    (4)若分割层次大于2*K( K <= lg2N),则调用heapsort,防止退化为N2..;  
    (5)若当前进入的子序列长度< 16,则退出;(宗旨是调用QUITSORT使之基本有序)  
    (6)当整个序列基本有序后,直接调用简单插入排序。 
*/   
 
// 附:stable_sort partial_sort nth_element() merges()  
// 语法:  
#include <algorithm>  
void stable_sort( iterator start, iterator end );  
void stable_sort( iterator start, iterator end, StrictWeakOrdering cmp );   
/*   
    1,升序排列。 
    2,稳定排序。其代价是增加了时间复杂度,最坏情况下为O(N*(log(N))^2)。  
*/ 
 
 
#include <algorithm>  
void partial_sort( iterator start, iterator middle, iterator end );  
void partial_sort( iterator start, iterator middle, iterator end, StrictWeakOrdering cmp );  
/* 
    1,将区间[start,end)中的前N个元素升序排列;  
    2,N由start与middle确定。 
*/   
 
#include <algorithm>  
void nth_element( iterator start, iterator middle, iterator end );  
void nth_element( iterator start, iterator middle, iterator end, StrictWeakOrdering cmp );  
 
#include <algorithm>  
iterator merge( iterator start1, iterator end1, iterator start2, iterator end2, iterator result );  
iterator merge( iterator start1, iterator end1, iterator start2, iterator end2, iterator result, StrictWeakOrdering cmp ); 
// 语法:
#include <algorithm>
void sort(iterator start,iterator end);
void sort(iterator start,iterator end,StritWeakOrdering cmp);

/*
 1,sort()算法将在区间 [start,end)中的元素升序排列。
 2,如果两个元素相等,不能保证其维持原来顺序。
 3,默认使用<操作符,如果定义比较函数cmp,则使用cmp。
 4,sort()算法内部是introsort(内观排序,自省的快排)算法
 5,时间复杂度O(N*log(N)) (平均和最坏)
 
   例子:(降序排列)
 bool cmp( int a, int b )
 {
    return a > b;
  }  
  sort( v.begin(), v.end(), cmp );
  
 附:introsort原理
 (1)三点中值法。取中间大小的为PIVOT;
 (2)分割函数,使用中间左右两部分:L< M < R, 返回M;
 (3)左部分递归调用,右部分在循环中处理;
 (4)若分割层次大于2*K( K <= lg2N),则调用heapsort,防止退化为N2..;
 (5)若当前进入的子序列长度< 16,则退出;(宗旨是调用QUITSORT使之基本有序)
 (6)当整个序列基本有序后,直接调用简单插入排序。
*/

// 附:stable_sort partial_sort nth_element() merges()
// 语法:
#include <algorithm>
void stable_sort( iterator start, iterator end );
void stable_sort( iterator start, iterator end, StrictWeakOrdering cmp );
/* 
 1,升序排列。
 2,稳定排序。其代价是增加了时间复杂度,最坏情况下为O(N*(log(N))^2)。
*/


#include <algorithm>
void partial_sort( iterator start, iterator middle, iterator end );
void partial_sort( iterator start, iterator middle, iterator end, StrictWeakOrdering cmp );
/*
 1,将区间[start,end)中的前N个元素升序排列;
 2,N由start与middle确定。
*/

#include <algorithm>
void nth_element( iterator start, iterator middle, iterator end );
void nth_element( iterator start, iterator middle, iterator end, StrictWeakOrdering cmp );

#include <algorithm>
iterator merge( iterator start1, iterator end1, iterator start2, iterator end2, iterator result );
iterator merge( iterator start1, iterator end1, iterator start2, iterator end2, iterator result, StrictWeakOrdering cmp );

 


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ahcaigen/archive/2010/02/27/5332627.aspx

分享到:
评论

相关推荐

    C++ 库函数 sort 详解

    本PPT适合初学者学习C++ sort #排序 #快速排序 #自定义排序 #C++ #大学计算机基础 #信息学奥赛

    Lua的table库函数insert、remove、concat、sort详细介绍1

    Lua的table库函数insert、remove、concat、sort详细介绍1

    C++标准模板库函数sort的那些事儿

    sort函数是标准模板库的函数,已知开始和结束的地址即可进行排序,可以用于比较任何容器(必须满足随机迭代器),任何元素,任何条件,执行速度一般比qsort要快

    sort_disk_file.rar_random_sort_sort a disk file

    根据编程珠玑第一章内容的C++实现。包括使用库函数sort和使用bit_vector两种方法。包括含有不重复随机数文件的生成。

    Lua的table库函数insert、remove、concat、sort详细介绍

    主要介绍了Lua的table库函数insert、remove、concat、sort详细介绍,本文分别给出了这几个函数的使用实例,需要的朋友可以参考下

    C语言链表操作函数

    C语言链表的应用,包括建立链表、删除链表、插入/删除元素操作

    sort_duiguoguozi

    这是调用库函数写的一个堆果子问题,提交OJ会超时,不过我觉得这样代码会很简单,对比一下就知道了,不过很想知道和最小堆比两个的效率如何……

    Kruskal算法 最小生成树

    这一步可以直接使用库函数qsort或者sort。接下来从小到大依次考察每一条边(u,v)。 具体实现过程如下: &lt;1&gt; 设一个有n个顶点的连通网络为G(V,E),最初先构造一个只有n个顶点,没有边的非连通图T={V,空},图中...

    c/c++函数库说明(api)html版

    sort (cpplist) splice (cpplist) sprintf (stdio) sqrt (stdmath) srand (stdother) sscanf (stdio) strcat (stdstring) strchr (stdstring) strcmp (stdstring) strcoll (stdstring) strcpy (stdstring)...

    C++学生管理系统

    (8) 排序函数Sort():按平均分对学生成绩记录项进行降序排序; (9)插入函数Insert():按平均分顺序插入新记录。 另外,学生数据可写入文件,也可从文件中读取。 在基本达到题目要求外,进行创新设计,如设计模糊...

    python文件排序的方法总结

    用函数sort()对数字排序,它的对象是数字,如果读取文件的话,需要进行处理(把文件后缀名‘屏蔽’)。 (1)首先:我测试的文件夹是/img/,里面的文件都是图片,如下图所示: (2)测试库函数sorted(),直接贴出...

    MFC CList 链表 排序,源码实现,已验证,VC++

    MFC 不说特别垃圾吧,反正是不好用,毕竟语言没有好坏之分,连个CList排序库函数都没有,只有自己编写了,网上找了好久也不是自己想要的,要不是公司项目一定要MFC编写,谁愿意学这个。

    ACM做题时的小技巧

    1.一般用C语言节约空间,要用C++库函数或STL时才用C++; cout、cin和printf、scanf最好不要混用。 大数据输入输出时最好不要用cin、cout,防止超时。 2.有时候int型不够用,可以用long long或__int64型(两个下划线...

    C中qsort快速排序使用实例

    在学习C++ STL的sort函数,发现C中也存在一个qsort快速排序,要好好学习下C的库函数啊

    cfcc-main.zip

    22.cpp //神奇的c++stl库函数 23.cpp //最大最小数 24.cpp //全排列 25.cpp //数组逆置输出 26.cpp //set(集合) 27.cpp //vector(不定长数组) 28.cpp //map(映射) 29.cpp //结构体swap 30.cpp //结构体sort ...

    gasstationleetcode-Algorithms:这个项目的目的是用不同的语言编写从易到难的所有Leetcode挑战。我的C文件已准

    而不是具有相同名称的库函数。 已经完成了 # 标题 标签 困难 日期 0001 Array , Hash Table 简单的 2020. 08. 16. 0007 Math 简单的 2020. 08. 20. 0009 Math 简单的 2020. 08. 21. 0013 Math , String 简单的 2020...

    php实现希尔排序算法的方法分析

    虽然现在各种程序语言都有其各自强大的排序库函数,但是这些底层实现也都是利用这些基础或高级的排序算法。 理解这些复杂的排序算法还是很有意思的,体会这些排序算法的精妙~ 希尔排序(shell sort):希尔排序是...

    leetcode题库-LeetCode:leetcode练习集合(分专题练习)

    如果你不熟悉语言,可能你无法理解像sort, merge, bind,这些STL库函数在算法中的妙用 , 也无法理解vector 或是 queue这些容器库的方便之处。 熟悉数据结构与算法 如果你不熟悉数据结构,那么像二叉树,BST,AVL树...

    leetcode下载-Learning-Coding:学习编码

    排序算法sort() C++ primer第11.3.6小节中出现的单词置换程序,用到了文件输入输出流、字符流、字典 character.cpp : 字符串操作 C++中的字符容器string; C风格的字符串; C风格字符串的库函数; 字符串相关的笔试题...

Global site tag (gtag.js) - Google Analytics