c++ sort 类的一点区别

C++ STL的sort()函数结合了Quick Sort、Insertion Sort和Heap Sort,以实现Introspective Sorting。当数据量大时,sort()首先使用Quick Sort,然后根据数据量大小切换到Insertion Sort或Heap Sort。sort()函数需要包含头文件<algorithm>,并接受三个参数,分别是排序范围的起始和结束地址,以及可选的比较函数。在定义自定义比较函数时,对于类成员函数需要声明为static,并确保参数为const引用,否则会导致编译错误。
摘要由CSDN通过智能技术生成

STL的sort()算法,数据量大时采用Quick Sort,分段递归排序,一旦分段后的数据量小于某个门槛,为避免Quick Sort的递归调用带来过大的额外负荷,就改用Insertion Sort。如果递归层次过深,还会改用Heap Sort。STL sort算法(以上三种算法的综合) -- Introspective Sorting(内省式排序)。

I)Sort函数包含在头文件为#include<algorithm>的c++标准库中!
II)Sort函数有三个参数:
(1)第一个是要排序的数组的起始地址。
(2)第二个是结束的地址(最后一位要排序的地址)
(3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序。

STL里面有个sort函数,可以直接对数组排序,复杂度为n*log2(n)。

使用第一个版本是对[first,last)进行升序排序,默认操作符为"<",第二个版本使用comp函数进行排序控制,comp包含两个在[first,last)中对应的值,如果使用"<"则为升序排序,如果使用">"则为降序排序,分别对int、float、char以及结构体排序:

sort_main函数

#include "stdafx.h"
#include
  
  
   
   
#include
   
   
    
    
#include
    
    
     
     
#include 
     
     
      
      
using namespace std;

bool compare(const string &a, const string &b){
	return a > b;
}
bool cmp(const int &a, const int &b){
	return a > b;
}
int _tmain(int argc, _TCHAR* argv[])
{
	vector
      
      
        res = { "ABC", "ACB", "BAC", "BCA", "CAB", "CBA"}; vector 
       
         B = { 1, 2, 3, 4, 5 }; for (int i = 0; i < res.size(); i++){ cout << res[i] << " "; } cout << endl; for (int i = 0; i < B.size(); i++){ cout << B[i] << " "; } cout << endl; sort(B.begin(), B.end(), cmp); sort(res.begin(), res.end(), compare); for (int i = 0; i < res.size()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值