排序
文章平均质量分 50
yanyanwenmeng
这个作者很懒,什么都没留下…
展开
-
1.4.2 USACO Barn Repair(贪心)
Barn RepairIt was a dark and stormy night that ripped the roof and gates off the stalls that hold Farmer John's cows. Happily, many of the cows were on vacation, so the barn was not completely full....原创 2020-03-20 07:24:19 · 506 阅读 · 0 评论 -
1.4.1 USACO Mixing Milk (贪心,sort导致RE)
Mixing MilkThe Merry Milk Makers company buys milk from farmers, packages it into attractive 1- and 2-Unit bottles, and then sells that milk to grocery stores so we can each start our day with delic...原创 2020-03-20 02:49:39 · 913 阅读 · 0 评论 -
第十周练习
7615 成绩排序 http://noi.openjudge.cn/ch0110/03/7914 分数线划定 http://noi.openjudge.cn/ch0110/05/7618 病人排队 http://noi.openjudge.cn/ch0110/08/10420 mysort http://cxsjsxmooc.openjudge.cn/2016hw10/4/10421 从字...原创 2018-08-25 00:31:01 · 704 阅读 · 0 评论 -
12.1 STL排序算法sort
从小到大排序:对a[]中的n个数进行排序,数组下标从1 开始 sort(a+1,a+1+n);对a[]中的n个数进行排序,数组下标从0开始sort(a,a+n);operator()相当于就是一个函数名,但是()不可以省略。另一种使用方法:比如成绩排序:描述给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字...原创 2018-09-04 14:25:44 · 295 阅读 · 0 评论 -
4.1 分治算法:归并排序
分析:参考自https://www.cnblogs.com/chengxiao/p/6194356.html归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"...转载 2018-10-09 22:46:07 · 535 阅读 · 0 评论 -
4.2 快速排序
快速排序的原理:比如有3个数4 7 2,我们把4作为关键字,把比4小的数排在4左边,把比4大的数排在4右边,最后的结果就为2 4 7。同理,当数很多的时候:第一步:我们可以选择第一个数为关键字,把比关键字小的排在关键字左边,把比关键字大的排在关键字右边。第二步:将关键字左边的数再次进行快速排序。第三步:将关键字右边的数再次进行快速排序。当a[j]>k的时候,j--,指标...原创 2018-10-10 11:16:15 · 189 阅读 · 0 评论 -
4.3 输出前m大的数 时间复杂度O(n+mlog(m))
#include<iostream>using namespace std;void swapM(int &a, int &b){ int tmp = a; a = b; b = tmp;}int t = 0;int n = 9;int a[] = {1,4,7,2,5,8,3,6,9};//用治处理 ...原创 2018-10-10 15:46:14 · 478 阅读 · 0 评论 -
4.4 求排列的逆序数
7622:求排列的逆序数描述在Internet上的搜索引擎经常需要对信息进行比较,比如可以通过某个人对一些事物的排名来估计他(或她)对各种不同信息的兴趣,从而实现个性化的服务。对于不同的排名结果可以用逆序来评价它们之间的差异。考虑1,2,…,n的排列i1,i2,…,in,如果其中存在j,k,满足 j < k 且 ij > ik, 那么就称(ij,ik)是这个排列的一个逆序。...原创 2018-10-10 17:30:57 · 489 阅读 · 0 评论 -
10.4 10.5 选择排序、插入排序、冒泡排序
选择排序:先找最小值,然后交换位置。#include<iostream>using namespace std;int SelectionSort(int a[], int size){ for(int i = 0; i < size - 1; ++ i)//最后一次不用比较 { int tmpMin = i;//假设第i个数最小 f...原创 2018-08-23 22:34:32 · 230 阅读 · 0 评论 -
优先队列的使用方法(自定义排序)
参考1:http://blog.csdn.net/ac_gibson/article/details/44200411参考2:http://www.cppblog.com/shyli/archive/2007/04/06/21366.html那么何为优先队列呢,在优先队列中,元素被赋予优先级,当访问元素时,具有最高级优先级的元素先被访问。即优先队列具有最高级先出的行为特征。原创 2017-10-02 23:31:49 · 29564 阅读 · 9 评论 -
插入排序
《算法竞赛宝典》把预插入的数与数组中的各个数逐个比较,当找到第一个比插入数大的元素i时,该元素之前即为插入位置。然后从数组最后一个元素开始到该元素为止,逐个后移一个位置。初始键值序列 【12】 15 9 20 6 31 24第一趟排序: 【12】 15】 9 20 6 31 24第二原创 2017-05-03 21:10:12 · 239 阅读 · 0 评论 -
结构体 成绩统计
书籍《CCF 中学生计算机程序设计》 江涛 等输入N个学生的姓名和语文、数学的得分,按总分从高到低输出。分数相同的按输入先后输出。/*4gaoxiang 78 96wangxi 70 99liujia 90 87zhangjin 78 91*/ #include#include#includeusing namespace std;struct studen原创 2017-05-03 13:24:43 · 1814 阅读 · 0 评论 -
自定义排序2
给定学生的姓名、学号、绩点,请按学生姓名从小到大、学生学号从小到大、学生绩点从大到小排序。#include#include#includeusing namespace std;struct Student{ char name[20];//姓名 int id;// 学号 double gpa;//绩点 };Student students[]={{"Jack",11翻译 2016-11-13 17:09:43 · 444 阅读 · 0 评论 -
自定义规则排序
将一个数组按照从小到大、从大到小、按个位数从大到小排序#include#include#includeusing namespace std;struct rule1//从大到小 { bool operator()(const int & a1,const int & a2){ return a1>a2; }};struct rule2//按个位数从大到小 { b原创 2016-11-13 16:02:21 · 668 阅读 · 0 评论 -
讨厌的青蛙(枚举)
图片来源:点击打开链接问题讲解: 解题思路:任意确定两点,作为青蛙跳的前两点,然后判断这两点是否合理:1. 第一点的前一点还在稻田中,说明步长不合理,重新选第二点;2. x方向越界,重新选择第一点。(因为x是从小到大排序,第二点不管怎么选步长只会越来越大,所以需要重新选择第一点。)3. y方向越界,重新选择第二点。原创 2017-08-18 19:52:14 · 880 阅读 · 0 评论 -
归并排序(分治)
归并排序 分治原创 2017-08-21 18:17:25 · 386 阅读 · 0 评论 -
友好城市(动态规划,排序)
【例9.7】友好城市时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】Palmia国有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市。北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同。每对友好城市都向政府申请在河上开辟一条直线航道连接两个城市,但是由于河上雾太大,政府决定避免任意两条航道交原创 2017-09-20 15:47:46 · 1405 阅读 · 0 评论 -
象棋比赛(排序)
【题目描述】有 N 个人要参加国际象棋比赛,该比赛要进行 K 场对弈。每个人最多参加两场对弈,最少参加零场对弈。每个人都有一个与其他人不相同的等级(用一个正整数来表示)。在对弈中,等级高的人必须用黑色的棋子,等级低的人必须用白色的棋子。每人最多只能用一次黑色的棋子和一次白色的棋子。为了增加比赛的可观度,观众希望 K 场对弈中双方的等级差的总和最小。比如有 7 个选手,他们的原创 2017-09-20 21:48:54 · 1471 阅读 · 0 评论 -
选择排序
核心:先找最小的值,再交换数据。#includeint a[100];void select_sort(int n) //选择排序函数 { int i,j,min,t; for(i=0;i<n-1;i++)//找出最小的数进行交换 { min=i;//假设当前下标为i的数最小,比较后再调整 for(j=i;j<n;j++)//循环找出最小数的下标是哪个 {原创 2017-05-03 21:17:47 · 224 阅读 · 0 评论
分享