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函数对象适配器 函数适配器是用来让一个函数对象表现出另外一种类型的函数对象的特征.因为,许多情况下,我们所持有的函数对象或普通函数的参数个数或是返回值类型并不是我们想要的,这时候 ...
随机推荐
- 什么是ajax,ajax原理是什么 ,优缺点是什么
AJAX工作原理及其优缺点 1.什么是AJAX?AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页 ...
- VBS基础篇 - 队列
VBS中的队列需要使用System.Collections.Queue '建立队列 Dim Que : Set Que = CreateObject("System.Collections. ...
- 关于表 datatable的条件查询
关于表 datatable的条件查询 从数据库中获得一个datatable dt .里面有很多的死的数据.然后,我就是要在这个表中来按条件查询,例如 dt中有个列叫"palte", ...
- Basic Concepts of International Trade
The international trade structure is a reflection of worldwide economic development, industrial stru ...
- 2693: jzptab - BZOJ
Description Input 一个正整数T表示数据组数接下来T行 每行两个正整数 表示N.MOutput T行 每行一个整数 表示第i组数据的结果Sample Input 1 4 5 Sampl ...
- 【转】成为it精英,我奋斗7年
转载地址:http://liangwang985.blog.163.com/blog/static/119549233201191394259491/ 这些日子 我一直在写一个实时操作系统内核,已有小 ...
- 【POJ】【2960】S-Nim
博弈论 这题跟 BZOJ 1874 取石子游戏 差不多 先暴力求出10000以内的SG函数(利用定义来求即可) 然后每次询问直接将SG值异或起来即可…… Source Code Problem: Us ...
- 【WCF--初入江湖】04 WCF通信模式
04 WCF通信模式 WCF的通信模式有三种 [1]请求响应模式: 只能是客户端调用服务器; 客户端请求并等待服务器的响应后才继续执行后续操作(异步调用除外) [2]单工模式: 只能是客户端调用服务器 ...
- uva 10106
尝试一下java 的大数类 import java.util.*; import java.io.*; import java.math.BigInteger; public class Main { ...
- Android 判断当前联网的类型 wifi、移动数据流量
先获取系统管理网络连接的Manager: ConnectivityManager connectivityManager = (ConnectivityManager) getSystemServic ...