
算法初步--排序
令i从0到n-1枚举,进行n趟操作,每趟从A[i,n]中选择最小的元素 ,算法复杂度为O(n^2)
假设某一趟时,序列A的前i-1个元素A[1]~A[i-1]已经有序,然后从范围[1,i-1]中寻找某个位置j ,使得插入后仍然有序,算法复杂度为O(n^2)
使用时必须加上头文件#include <algorithm> 和using namespace std;
函数原型
如何实现比较函数cmp
若比较函数不填,则默认按照从小到大的顺序排序,如果想要从大到小来排序,则要使用比较函数cmp
结构体数组的排序
一级排序,按照 x从大到小排序

二级排序,先按照 x从大到小排序,但当 x相等的情况下,按照 y的大小来排序
容器的排序
在 STL标准容器中,只有 vector、string、deque是可以使用 sort 的。结构体数组结构体数组这是因为 set、map这种容器是用红黑树实现的,元素本身有序
vector的排序:sort(vi.begin(), vi.end()); // 对 vi 进行排序
string的排序:sort(str, str+3); // 对 str 进行排序
实例:对学生进行排序
如果两个学生分数不相同,那么分数高的排在前面
否则,将姓名字典序小的排在前面
排名的实现

规则一般是:分数不相同的排名不同,分数相同的排名相同但占用一个排位
在数组排序完成后,先将数组的第一个个体(假设数组下标从0开始)的排名记为1
然后遍历剩余个体
如果当前个体的分数等于上一个个体的分数,那么当前个体的排名等于上一个个体的排名
否则,当前个体的排名等于数组下标加一
题意:在 n个考场有若干数量的考生。现在给出各个考场中考生的准考证号与分数,要求将所有考生按分数从高到低排序,并顺序输出所有考生的准考证号、排名、考场号、考场排名
思路:
按考场读入各考生的信息,并对当前读入的考生进行排序,将排名写入结构体中
对所有考生进行排序
按顺序一边计算总排名,一边输出所有考生的信息
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-58702-1.html
这需要胆量和魄力
查一查什么原因