STL排序算法sort

要使用STL中的算法,需要在程序头文件引入#include <algorithm>

1.对基本类型的数组从小到大排序:

sort(数组名+n1,数组名+n2);

n1和n2都是int类型的表达式,可以包含变量

如果n1=0,则 + n1可以不写 

将数组中下标范围为[n1,n2)的元素从小到大排序。下标为n2的元素不在排序区间内

2.对元素类型为T的基本类型数组从大到小排序:

sort(数组名+n1,数组名+n2,greater<T>());

3.用自定义的排序规则,对任何类型T的数组排序

 sort(数组名+n1,数组名+n2,排序规则结构名());

排序规则结构的定义方式: 

 struct  排序规则结构名 {  bool operator()( const T & a1,const T & a2) {

              //若a1应该在a2前面,则返回true,否则返回false。 

                        }

}; 

1:

  int a[] = {15,4,3,9,7,2,6};  sort(a,a+7); //对整个数组从小到大排序

int a[] = {15,4,3,9,7,2,6};  sort(a,a+3); // 结果:{3,4,15,9,7,2,6}

int a[] = {15,4,3,9,7,2,6};  sort(a+2,a+5); //结果:{15,4,3,7,9,2,6}

例2:

int a[] = {15,4,3,9,7,2,6};

sort(a+1,a+4,greater<int>()); // 结果:{15,9,4,3,7,2,6}

例3:

#include <iostream>

#include <cstring>

#include <algorithm>

using namespace std;

struct Student {

char name[20];

int id;

double gpa;

};

Student students [] = { {"Jack",112,3.4},{"Mary",102,3.8},{"Mary",117,3.9}, {"Ala",333,3.5},{"Zero",101,4.0}};

struct StudentRule1 { //按姓名从小到大排

bool operator() (const Student & s1,const Student & s2) {

if( stricmp(s1.name,s2.name) < 0)

return true;

return false;

}

};

struct StudentRule2 { //按id从小到大排

bool operator() (const Student & s1,const Student & s2) {

return s1.id < s2.id;

}

};

struct StudentRule3 {//按gpa从高到低排 

bool operator() (const Student & s1,const Student & s2) {   return s1.gpa > s2.gpa;

}

};

void PrintStudents(Student s[],int size){

for(int i = 0;i < size;++i)

cout << "(" << s[i].name << "," << s[i].id <<"," << s[i].gpa << ") " ;  cout << endl;

}

int main()

{

int n = sizeof(students) / sizeof(Student);

sort(students,students+n,StudentRule1()); //按姓名从小到大排

PrintStudents(students,n);

sort(students,students+n,StudentRule2()); //按id从小到大排

PrintStudents(students,n);

sort(students,students+n,StudentRule3()); //按gpa从高到低排

PrintStudents(students,n);

return 0;

}

结果:

(Ala,333,3.5) (Jack,112,3.4) (Mary,102,3.8) (Mary,117,3.9) (Zero,101,4)

(Zero,101,4) (Mary,102,3.8) (Jack,112,3.4) (Mary,117,3.9) (Ala,333,3.5)

(Zero,101,4) (Mary,117,3.9) (Mary,102,3.8) (Ala,333,3.5) (Jack,112,3.4)

 

时间: 2024-10-02 05:32:11

STL排序算法sort的相关文章

数据结构与算法---排序算法(Sort Algorithm)

排序算法的介绍 排序也称排序算法 (Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程. 排序的分类 1) 内部排序: 指将需要处理的所有数据都加载 到内部存储器(内存)中进行排序. 2) 外部排序法:数据量过大,无法全部加载到内 存中,需要借助外部存储(文件等)进行 排序. 常见的排序算法分类 算法的时间复杂度 度量一个程序(算法)执行时间的两种方法 1.事后统计的方法这种方法可行, 但是有两个问题:一是要想对设计的算法的运行性能进行评测,需要实际运行该程序: 二是所

7 种排序算法/sort algorithm

常见的排序算法_百度搜索https://www.baidu.com/s?wd=%E5%B8%B8%E8%A7%81%E7%9A%84%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95&rsv_spt=1&rsv_iqid=0xdefec6740000c566&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=site888_3_pg&rsv_enter=1&rsv_sug

c++STL排序算法注意事项

关于算法中的比较函数 1 #include<iostream> 2 #include<algorithm> 3 using namespace std; 4 int compare(double a,double b){ 5 return a>b; 6 } 7 int main(){ 8 double a[10]={2.15,2.14,3.11,3.1010001,5,8,46,5,45,10}; 9 double b[10]={2.15,2.14,3.11,3.101000

(C++)STL排序函数sort和qsort的用法与区别

主要内容: 1.qsort的用法 2.sort的用法 3.qsort和sort的区别 qsort的用法: 原 型: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *)); 功 能: 使用快速排序例程进行排序 参 数: 1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针,用于确定排序的顺序 说 明:qsort函数是ANSI C标准中提供的,其

C++ - STL常用算法-sort、find、count、等等【还有remove......暂时不写】

起始算法有很多,或者说太多,这里不写了,主要写一写在 vector deque stack queue set map 中出现过的算法,其他算法,以后在此补充! 这些算法使用时候,包含:#include<algorithm> 其余算法参考:https://blog.csdn.net/tick_tock97/article/details/71316372 在线手册:http://www.cplusplus.com/reference/algorithm 一.sort 没有返回值: 1 std:

STL笔记(6)标准库:标准库中的排序算法

STL笔记(6)标准库:标准库中的排序算法 标准库:标准库中的排序算法The Standard Librarian: Sorting in the Standard Library Matthew Austern http://www.cuj.com/experts/1908/austern.htm?topic=experts 用泛型算法进行排序    C++标准24章有一个小节叫“Sorting and related operations”.它包含了很多对已序区间进行的操作,和三个排序用泛型

STL算法之排序算法

STL排序算法通常复杂度坏于线性,且必须要random-access Iterators. 所以,forward_list, list, associative and unordered contains 不提供随机访问迭代器,这些容器不能用排序算法. 但是,forward_list,list提供了成员函数sort,associative contains 自动排序,unordered contains不能排序. 通常,排序元素一次要比保持元素有序要更快.STL提供了不同的排序算法,根据需求选

详细解说 STL 排序(Sort)(转)

作者Winter 详细解说 STL 排序(Sort) 0 前言: STL,为什么你必须掌握 1 STL提供的Sort 算法 1.1 所有sort算法介绍 1.2 sort 中的比较函数 1.3 sort 的稳定性 1.4 全排序 1.5 局部排序 1.6 nth_element 指定元素排序 1.7 partition 和stable_partition 2 Sort 和容器 3 选择合适的排序函数 4 小结 5 参考文档 一切复杂的排序操作,都可以通过STL方便实现 ! 0 前言: STL,为

详细解说 STL 排序(Sort)

http://www.cppblog.com/mzty/archive/2005/12/15/1770.html 详细解说 STL 排序(Sort) 0 前言: STL,为什么你必须掌握 1 STL提供的Sort 算法 1.1 所有sort算法介绍 1.2 sort 中的比较函数 1.3 sort 的稳定性 1.4 全排序 1.5 局部排序 1.6 nth_element 指定元素排序 1.7 partition 和stable_partition 2 Sort 和容器 3 选择合适的排序函数