C++ STL之排序算法
排序算法和查找算法差不多,也涉及到迭代器区间问题,关于该问题的注意事项就不在啰嗦了
一、全部排序sort、stable_sort
sort是一种不稳定排序,使用时需要包含头文件algorithm
默认可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一地址。如果只传入这两个地址的话,就按照升序对指定地址区间排序。想要按照降序排列的话,需要传入第三个函数,第三个函数可以自己写cmp,也可以直接调用库函数
greater<data-type>(),使用库函数的时候要包含头文件functional。
总结如下:
#include<algorithm>
#include<functional>
升序:sort(begin,end,less<data-type>());
降序:sort(begin,end,greater<data-type>()).
#include<iostream>
#include<algorithm>
#include<functional>
using namespace std;
int main()
{
int a[]={,,,,,,,,};
//升序
sort(a,a+,less<int>());
cout<<"升序排序结果"<<endl;
for(int i=;i<;i++)
{
cout<<a[i]<<endl;
}
//降序
sort(a,a+,greater<int>());
cout<<"降序排序结果"<<endl;
for(int i=;i<;i++)
{
cout<<a[i]<<endl;
}
return ;
}
如果忘记了升序或者降序后面的那个方法名称,也可以自己写个简单的
bool cmp(int a,int b)
{
return a>b;
}
sort(a,a+9,cmp);
就是降序
bool cmp(int a,int b)
{
return a<b;
}
sort(a,a+9,cmp);
就是升序
与之对应的有一个stable_sort()用法与sort一样,是稳定排序。
二、部分排序partial_sort、partial_sort_copy
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int num[]={,,,,,,,,,};
for(int i=;i<;i++)
{
cout<<num[i]<<" ";
}
cout<<endl;
//partial_sort
//void partial_sort(_RanIt _First, _RanIt _Mid, _RanIt _Last, _Pr _Pred)
//选出[_First, _Last)之间的_Mid-_First个数进行排序,放在_First到_Mid位置,剩下的在_Mid到_Last的元素不排序,pred是排序方式
partial_sort(num,num+,num+);
for(int i=;i<;i++)
{
cout<<num[i]<<" ";
}
cout<<endl; //partial_sort_copy
//_RanIt partial_sort_copy(_InIt _First1, _InIt _Last1,_RanIt _First2, _RanIt _Last2, _Pr _Pred)
int shuzi[]={,,,,,,,,,};
int result1[];
int result2[];
partial_sort_copy(shuzi,shuzi+,result1,result1+);
for(int i=;i<;i++)
{
cout<<shuzi[i]<<" ";
}
cout<<endl;
for(int i=;i<;i++)
{
cout<<result1[i]<<" ";
}
cout<<endl; partial_sort_copy(shuzi,shuzi+,result2,result2+);
for(int i=;i<;i++)
{
cout<<shuzi[i]<<" ";
}
cout<<endl;
for(int i=;i<;i++)
{
cout<<result2[i]<<" ";
}
cout<<endl;
return ;
}
C++ STL之排序算法的更多相关文章
- C++ STL 常用排序算法
C++ STL 常用排序算法 merge() 以下是排序和通用算法:提供元素排序策略 merge: 合并两个有序序列,存放到另一个序列. 例如: vecIntA,vecIntB,vecIntC是用ve ...
- STL常用排序算法介绍
merge() 以下是排序和通用算法:提供元素排序策略 merge: 合并两个有序序列,存放到另一个序列. #include <iostream> #include <cstdi ...
- STL源代码分析——STL算法sort排序算法
前言 因为在前文的<STL算法剖析>中,源代码剖析许多,不方便学习,也不方便以后复习.这里把这些算法进行归类,对他们单独的源代码剖析进行解说.本文介绍的STL算法中的sort排序算法,SG ...
- STL学习笔记--排序算法
排序算法 C++ STL 的排序算法(Sorting algorithms)是一组将无序序列排列成有序序列的模板函数或与排序相关的模板函数,提供了排序.折半搜索.归并.集合操作.堆操作.最值求解.字典 ...
- STL笔记(6)标准库:标准库中的排序算法
STL笔记(6)标准库:标准库中的排序算法 标准库:标准库中的排序算法The Standard Librarian: Sorting in the Standard Library Matthew A ...
- STL中sort排序算法第三个参数_Compare的实现本质
关于C++ STL vector 中的sort排序算法有三种自定义实现,它们本质上都是返回bool类型,提供给sort函数作为第三个参数. 重载运算符 全局的比较函数 函数对象 我认为从实现方式看,重 ...
- Effective STL 学习笔记 31:排序算法
Effective STL 学习笔记 31:排序算法 */--> div.org-src-container { font-size: 85%; font-family: monospace; ...
- STL中的排序算法
本文转自:STL中的排序算法 1. 所有STL sort算法函数的名字列表: 函数名 功能描述 sort 对给定区间所有元素进行排序 stable_sort 对给定区间所有元素进行稳定排序 ...
- C++进阶 STL(3) 第三天 函数对象适配器、常用遍历算法、常用排序算法、常用算数生成算法、常用集合算法、 distance_逆序遍历_修改容器元素
01昨天课程回顾 02函数对象适配器 函数适配器是用来让一个函数对象表现出另外一种类型的函数对象的特征.因为,许多情况下,我们所持有的函数对象或普通函数的参数个数或是返回值类型并不是我们想要的,这时候 ...
随机推荐
- SQL Server 2008之数据库大型应用解决方案总结
着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载.对于系统的稳定性和扩展性造成了极大的问题. 一. ...
- ProgressDialog弹出时的底色变暗(转)
背景:在做一个进度条时,不想让它的背景变暗,以免影响其他区域的正常显示. 在网上搜索时,看到的方法多数是: 方法一 :在代码中 可以这么设置 Window mWindow = getWindow(); ...
- ETL Pentaho Data Integration (Kettle) 插入/更新 问题 etl
Pentaho Data Integration (Kettle) 使用此工具 按 索引 做 插入更新操作时,也可能报 索引重复 的错误, 解决方法: 匹配的索引字段可能有null值,会导致此错误 ...
- iOS开发之深入探讨runtime机制02-runtime的简单使用
runtime机制为我们提供了一系列的方法让我们可以在程序运行时动态修改类.对象中的所有属性.方法. 下面就介绍运行时一种很常见的使用方式,字典转模型.当然,你可能会说,“我用KVO直接 setVal ...
- uva 10269 最短路
求两次最短路 #include <cstdio> #include <cstdlib> #include <cmath> #include <map> ...
- uva 991
卡特兰数 最后不输出空行... #include <cstdio> #include <cstdlib> #include <cmath> #include &l ...
- uva 10131
DP 先对大象体重排序 然后寻找智力的最长升序子列 输出路径.... #include <iostream> #include <cstring> #include &l ...
- Searching a 2D Sorted Matrix Part I
Write an efficient algorithm that searches for a value in an n x m table (two-dimensional array). Th ...
- 关联式容器(associative containers)
关联式容器(associative containers) 根据数据在容器中的排列特性,容器可分为序列式(sequence)和关联式(associative)两种. 标准的STL关联式容器分为set( ...
- Asp.net 身份验证
Forms 验证方式对基于用户的验证授权提供了很好的支持,可以通过一个登录页面验证用户的身份,将此用户的身份发回到客户端的Cookie,之后此用户再访问这个 web应用就会连同这个身份Cookie一起 ...