![](https://img-blog.csdnimg.cn/20190828214923431.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
排序
SYaoJun
这个作者很懒,什么都没留下…
展开
-
461. 无序数组K小元素
lintcode题目难度:中等类型:分治题意:求出数组第k小的数,可以使用优先队列,也可以使用快排。按照快排的思路,先寻找分割点,然后讲分割点两边的数据满足左边小于关键字,右边大于关键字,然后统计左边的数量left和k的相对大小,如果左边的数量比k大,说明第k小的数,一定在左边,所以直接求左边,反之在右边。时间复杂度:堆O(nlgn)O(nlgn)O(nlgn) 快排O(n)O(n)O(...原创 2020-04-12 22:28:35 · 334 阅读 · 0 评论 -
排序
题目公司:爱奇艺类型:数组排序题意:计算升序后,不在原位置的数的个数。#include <bits/stdc++.h>using namespace std;const int N = 55;int a[N], b[N];int main(){ int n; scanf("%d", &n); for(int i = 0; i < n; i++){ ...原创 2020-03-27 11:13:01 · 104 阅读 · 0 评论 -
1116 Come on! Let's C (20 分)
版本1注意: 不存在的数据,就算查询过的,但是不能输出checked,而要继续输出 are you kidding?注意整型要保证输出结果为4位数,前导零需要补上。#include <cstdio>#include <cmath>#include <iostream>#include <string>#include <vecto...原创 2019-12-03 19:15:58 · 134 阅读 · 0 评论 -
1141 PAT Ranking of Institutions (25 分)
知识点:排序题版本1耗时46分钟注意score必须是按照整型排序,而不是浮点数排序。不然最后一个测试点会出错。#include <cstdio>#include <cmath>#include <iostream>#include <string>#include <vector>#include <cstring...原创 2019-12-03 08:31:10 · 103 阅读 · 0 评论 -
1153 Decode Registration Card of PAT (25 分)
版本1这个题,怎么说呢?巨TM恶心不过分吧。排序尽量用结构体吧,vector靠不住。今天不是type==3的时候,我偏要用vector保存pair类型来排序,不然早就过了。还有就是字符转数字的时候没有减去字符0,导致直接算的ASCII码值。#include <cstdio>#include <cmath>#include <iostream>#in...原创 2019-12-02 23:16:08 · 139 阅读 · 0 评论 -
1035 插入与归并 (25 分)
主要考查对插入排序和对归并排序的掌握插入排序注意需要对A[i]设置一个中间变量保存,否则会被覆盖,反正我经常忘记。归并排序我经常对两个排好序的链表和数组归并,但是很少对整个数组从头归并。所以最好记个模板。void mergeSort(int A[]){ for(int step=2;step/2 < n;step=step*2){ for(int i=0;i<n;i+=s...原创 2019-01-23 18:47:07 · 395 阅读 · 0 评论 -
7-45 航空公司VIP客户查询 (25 分)
结构体排序题注意点:里程数需要累加,有可能某个会员不止一次乘坐飞机输入输出最好用scanf不然会超时#include <cstdio>#include <algorithm>#include <string>#include <iostream>#include <unordered_map>using namesp...原创 2019-11-16 11:37:31 · 680 阅读 · 0 评论 -
7-41 PAT排名汇总 (25 分)
这种排序题做过好多遍了主要是需要注意相同成绩的人具有相同名次但是输出的时候如果成绩相同需要将学号小的先输出#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <vector>#include <cstring...原创 2019-10-20 15:16:40 · 923 阅读 · 0 评论 -
L2-015 互评成绩 (25 分)
大水题#include <iostream>#include <algorithm>#include <string>#include <deque>#include <cstring>#include <queue>#include <cstdio>using namespace std;int...原创 2019-09-07 16:43:00 · 391 阅读 · 0 评论 -
L2-012 关于堆的判断 (25 分)
边插入边建堆而不是都读入完成后再调整样例4的child是指直接孩子堆从1开始比较好调整#include <iostream>#include <vector>#include <algorithm>#include <string>#include <unordered_map>using namespace std;...原创 2019-09-06 21:19:42 · 262 阅读 · 0 评论 -
215. Kth Largest Element in an Array
使用快速选择排序根据快排的原理,每次取得pivot之后,计算两个各有多少个数。第k大的数就可以分配到两边来处理。当区间只有1个数时,就返回这个数。class Solution {public: int quicksort(vector<int>& nums,int k, int l, int r){ if(l >= r) return n...原创 2019-09-05 14:29:14 · 71 阅读 · 0 评论 -
75. 颜色分类
快排O(nlogn)O(nlogn)O(nlogn)class Solution {public: void sortColors(vector<int>& nums) { sort(nums.begin(), nums.end()); }};计数排序O(n)O(n)O(n)class Solution {public: ...原创 2019-09-05 13:33:42 · 121 阅读 · 0 评论 -
788. 逆序对的数量
逆序对1.左半边内部的逆序对数量2.右半边内部的逆序对数量3.中间的逆序对#include <iostream>#include <string>#include <algorithm>using namespace std;typedef long long LL;const int N =1e5+7;int arr[N], tmp[N];...原创 2019-09-05 11:40:00 · 242 阅读 · 0 评论 -
787. 归并排序
#include <iostream>#include <string>#include <algorithm>using namespace std;const int N =1e5+7;int arr[N], tmp[N];void mergesort(int l, int r){ if(l >= r) return; int mid...原创 2019-09-05 11:15:34 · 92 阅读 · 0 评论 -
1060 爱丁顿数 (25 分)
查看原题目请点我 解题思路:我记得我当时上机考这道题的时候特别幸运,因为我根本就没怎么读懂题就拿了24分,只有最后一个测试点那一分没拿到。#include<cstdio>#include<algorithm>using namespace std;const int maxn=100005;int arr[maxn]={0};bool cmp(int a...原创 2018-03-15 12:03:17 · 193 阅读 · 0 评论 -
1116 Come on! Let's C (20 分)
注意:\color{red}注意:注意:1.如果某个ID不存在,即使之前查过,但是不能输出checked,而要输出Are you kidding?2.输出字符串的时候别忘了后面的标点符号本题通过哈希查找,对于不同的状态赋予不同的值,如果是正常的数据,那么必然存在大于零的值,如果等于零,表示该ID不存在,如果该ID为-1,表示之前查找过了,注意在输出的时候要标记该ID的状态。#include...原创 2019-08-31 22:12:58 · 86 阅读 · 0 评论 -
1082 射击比赛 (20 分)
注意:\color{red} 注意:注意:1.距离越近越厉害2.题目没有说坐标一定是整型,有可能是浮点型,所以需要全部存为浮点型。#include <string>#include <cstdio>#include <cmath>#include <iostream>#include <algorithm> using ...原创 2019-08-31 11:00:16 · 122 阅读 · 0 评论 -
AcWing 785. 快速排序
题目链接快速排序三个步骤1.选分界点2.确定左右两段3.递归处理左右两段#include <iostream>using namespace std;const int maxn = 1e5+5;int arr[maxn];void quickSort(int l, int r){ if(l >= r) return; int x = arr[l+r>...原创 2019-08-31 08:20:18 · 84 阅读 · 0 评论 -
L2-027 名人堂与代金券 (25 分)
大水题只要用一个变量记录前一个数的排名就好了然后统计代金券是统计的全体的发放值,不是在前k名中统计#include <iostream>#include <algorithm>#include <string>#include <deque>#include <cstring>#include <queue>...原创 2019-09-07 20:45:20 · 467 阅读 · 0 评论 -
成绩排序【清华大学】
牛客网题目链接题解1.有多组输入2.如果读入的是0则降序,是1则升序3.当成绩相同时,需要按照录入在前的先排序#include <iostream>#include <vector>#include <string>#include <cmath>#include <algorithm>#include <que...原创 2019-10-01 21:26:12 · 127 阅读 · 0 评论 -
1059 C语言竞赛 (20 分)
查看原题目请点我这里 解题思路 显然这是一道排序题,但是有几个比较烦的地方,其一需要判断素数,由于这里给的数字不是很大,可以用单个判别,不用打素数表,当然打表以后速度更快;其二,对于查过的编号需要输出checked,但是不存在的ID仍然需要输出Are you kidding?所以再散列一遍参赛选手的ID。 注意 参赛选手编号是四位数,所以需要用0填充,这一点在样例中有体现,相信大家都不会出...原创 2018-03-15 20:08:08 · 230 阅读 · 1 评论 -
开门人与关门人【浙江大学】【排序】
牛客网题目链接思路输出最早开门的人和最后一个离开的人。用结构体存,然后两种排序方式,分别输出排在最前面的人。#include<bits/stdc++.h>using namespace std;struct stu{ string name,in,out;}E[10005];bool cmp(stu a, stu b){ return a.in < b.in;...原创 2019-10-05 13:38:38 · 178 阅读 · 0 评论 -
奥运排序问题【浙江大学】★
牛客网题目链接注意1.相同金牌数,相同名次,其他类似。2.存在人数或者奖牌为0的情况。#include <iostream>#include <vector>#include <string>#include <cmath>#include <algorithm>#include <queue>#inclu...原创 2019-10-05 12:11:04 · 391 阅读 · 0 评论 -
7-40 奥运排行榜 (25 分)【中等排序题】
排序题意输出四种排序方式中,排名最好的名次和排序方式。可以先用向量对四种排序方式分别排序,然后把排序的名次放入结构体中,再从这些名次中挑选最小的名次进行输出。注意,有相同成果的排名需要相同,而不是简单的加1#include <iostream>#include <vector>#include <string>#include <cmath...原创 2019-10-05 09:35:31 · 984 阅读 · 0 评论 -
整理图书【牛客网】【排序】
题目链接#include <iostream>#include <vector>#include <string>#include <cmath>#include <algorithm>#include <queue>#include <cstdio>#include <cctype>...原创 2019-10-05 08:18:48 · 150 阅读 · 0 评论 -
排序【华中科技大学】
最简单的排序题没有之一#include <iostream>#include <vector>#include <string>#include <cmath>#include <algorithm>#include <queue>#include <cstdio>#include <cct...原创 2019-10-02 22:02:34 · 126 阅读 · 0 评论 -
查找学生信息【清华大学】
题目描述 输入N个学生的信息,然后进行查询。 输入描述: 输入的第一行为N,即学生的个数(N接下来的N行包括N个学生的信息,信息格式如下: 01 李江 男 21 02 刘唐 男 23 03 张军 男 19 04 王娜 女 19 然后输入一个M(M02 03 01 04 输出描述: 输出M行,每行包括一个对应于查询的学生的信息。 如果没有对应的学生信息,则输出“No原创 2018-01-11 23:40:16 · 1078 阅读 · 0 评论 -
最小年龄的3个职工【华中科技大学】
牛客网题目链接使用结构体排序#include <iostream>#include <vector>#include <string>#include <cmath>#include <algorithm>#include <queue>#include <cstdio>#include <...原创 2019-10-02 14:24:31 · 125 阅读 · 0 评论 -
小白鼠排队【北京大学】
牛客网题目链接简单的排序题常用的方法是用结构体但是这道题只有两个变量可以用pair#include <iostream>#include <vector>#include <string>#include <cmath>#include <algorithm>#include <queue>#include...原创 2019-10-02 09:41:15 · 220 阅读 · 0 评论 -
成绩排序【清华大学】
题目链接版本1外置重载比较器类import java.util.*;public class perfomanceSort { public static void main(String[] args) { Scanner in = new Scanner(System.in); while(in.hasNext()) { int n = in.nextInt(); ...原创 2019-08-29 17:09:34 · 179 阅读 · 0 评论 -
AcWing 786. 第k个数
AcWing题目链接快速选择排序,时间复杂度O(n)O(n)O(n)按照快排的思路,每次统计左右两边的数量,确定第k个数所在的区间,然后类似于二分的方式,缩小查找范围。#include <iostream>using namespace std;const int maxn = 1e5+5;int arr[maxn];int quickSort(int l, int r...原创 2019-08-31 08:16:03 · 101 阅读 · 0 评论 -
最大差值
题目链接时间复杂度O(n)O(n)O(n)利用n个数放在n+1个桶中,必然有一个空桶,这也就否定了最大差值在桶内部。然后记录每个桶中的最大值和最小值,最大差值在两个临近桶之间。推荐看左神视频初级班第三讲100分钟左右考查内容桶排序#include<bits/stdc++.h>using namespace std;const int INF = 0x3fffffff...原创 2019-08-29 17:08:09 · 200 阅读 · 0 评论 -
1058 选择题 (20 分)
一次就过,开心!注意读字符的时候,空格和回车都会被读入,要特殊处理一下。#include<cstdio>#include<vector>#include<cstring> #include<algorithm>using namespace std; struct pro{ int f,fn,rn;//满分,总选项个数,正确选项个数 ...原创 2019-01-27 15:18:47 · 329 阅读 · 0 评论 -
1095 解码PAT准考证 (25 分)
向量与结构体结合排序和映射结合#include<bits/stdc++.h>#include <unordered_map>const int maxn=1e5+10;using namespace std;struct node{ string s; int score;};bool cmp(node a, node b){ if(a.sco...原创 2019-01-25 17:50:05 · 370 阅读 · 0 评论 -
1065 单身狗 (25 分)
有点繁琐,没有什么坑。注意地址是五位数,有个测试点需要补零。主要考查结构体的排序#include<cstdio>#include<algorithm>using namespace std;struct node{ int add,flag,partner,p;//地址,参会否,伴侣,伴侣出现否 }Node[100006];bool cmp(node a...原创 2019-01-24 13:47:28 · 314 阅读 · 0 评论 -
堆排序与稳定性
边界如此之复杂,思路如此之诡谲。时间复杂度O(nlogn)空间复杂度O(1)堆排序:1.把数组中的元素插入到大根堆,大根堆只保证堆顶元素为最大值,但是整体不保证有序。2.把堆顶元素与最后一个元素交换,同时堆长度heapsize减一3.把交换过后的0到heapsize的元素大根堆化,再重复第二步,直到heapsize的元素为1建立堆的时间复杂度O(n)1.heapsert函数是用来建立...原创 2018-12-22 14:25:38 · 13493 阅读 · 4 评论 -
BFPRT算法
#在一个数组中,求第K小的数,时间复杂度O(n)def bfprt(arr, begin, end, i): if begin == end : return arr[begin] pivot = medianofMedians(arr,begin,end) pivotRange = partition(arr, begin, end, pivot) ...原创 2019-08-23 07:21:33 · 83 阅读 · 1 评论 -
随机快排
import randomdef quicksort(arr, L, R): if(L < R): swap(arr,L + int(random.random()*(R-L+1)), R) low,high=partition(arr, L, R) quicksort(arr, L ,low) quicksort(a...原创 2018-12-11 11:00:01 · 107 阅读 · 0 评论 -
1080 MOOC期终成绩 (25 分)
查看原题目请点击我 解题思路:这道题有点类似数据库的合并一样,把名字相同的不同表合为一张表。我考虑的还是使用结构体,但是如果用strcmp来比较这个名字是否出现过,将会非常慢,我开始是这样做的,但是最后一个测试点不通过,超时了,后来用了一下map的映射,然后稍微加快了点,顺利通过了。#include<cstdio>#include<iostream>#incl...原创 2018-03-13 10:30:43 · 335 阅读 · 1 评论 -
1028 人口普查 (20 分)
查看原题目请点我这里解题思路 首先把合理的人员加入结构体中,在加入的时候顺便统计一下有多少个人,然后对结构体中合格的人员按照出生日期进行排序,得到最年长的在第一位,最年轻的在最后一位,直接输出就行了。是否是合理的人员通过check函数判断。 注意 当没有合格的人员时,直接输出0就行了。#include<cstdio>#include<algorithm>#...原创 2018-03-15 19:33:54 · 197 阅读 · 0 评论