![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序
文章平均质量分 56
我爱AI_AI爱我
不爱
展开
-
计数排序 练习题
http://acm.hdu.edu.cn/showproblem.php?pid=1425 计数排序 水题一枚 #include #include #include #include #include #include #include #include #include #include #include #include #include using names原创 2016-05-16 22:38:04 · 887 阅读 · 0 评论 -
计数模式 算法详解
这是一个简单的算法(不要怕~) 1.算法的时间复杂度 O(k + n) ,线性表中的元素属于s集合,s集合中元素的总数目为k 算法的空间复杂度O(k + n) 字符串中字符的个数比较有限,比较适合用改算法 2.限制条件(不用太纠结,后缀数组用是合适的) a.输入线性表的元素属于有限的偏序集 (数组就满足了) 什么是偏序集?满足关系R是自反的,反对称的,可原创 2016-05-16 22:52:01 · 969 阅读 · 0 评论 -
快速排序 与 第k小的数
快速排序是一个递归的算法(递归) 一次排序结束,基数左边的数都比基数小,基数右边的数,都比基数大 再对其左边和右边进行排序。而不用进行任何合并 #include #include using namespace std; int a[100]; int n; void quickSort(int bg,int ed)//[) { if(bg >= ed) retu原创 2016-07-13 10:27:57 · 553 阅读 · 0 评论 -
求m个区间中第k小的数
http://poj.org/problem?id=2104 题意:长度为n的int型数组,进行m次询问,求出从bg到ed第k小的数是什么 只用排序,勉强可以卡时间过。 思路:保存数组中每个点的位置id后,对整个数组排序。每次询问都遍历整个数组,当遍历到满足区间bg到ed的点时,就表示该点是该区间中没有计算过的最小的点 代码:#include #include #include #i原创 2016-07-13 10:33:32 · 833 阅读 · 0 评论 -
归并排序(初步)
用处一就是求逆序对的个数 首先保证两个数组是有序的,然后是利用中间数组的插入排序 板子 #include #include using namespace std; //将有二个有序数列a[first...mid]和a[mid...last]合并。 void mergearray(int a[], int first, int mid, int last, int temp[]) {原创 2016-06-10 13:01:39 · 275 阅读 · 0 评论 -
计数模式 (模板)
//接口:a[i]原数组。ranked[i]排好顺序的数组,maxn数组个数,maxk数字的范围 //调用 jishusort(n,maxk); //n代表数组的大小 int a[maxn],ranked[maxn],cnt[maxk];//cnt[i]小于等于i的个数 void jishusort(int n,int k)//n数组的大小,k数组中数字的范围 { for(int i原创 2016-05-16 22:39:13 · 427 阅读 · 0 评论 -
归并排序习题
题一 http://exam.upc.edu.cn/problem.php?id=2094 题意: 输入T组数据,每组数据第一行为n(共有2*n选手个数),r(回合次数),q(经过r回合第q名是谁)。第二行每个选手的初始分数。第三行,每个选手的能力(保证都不相同)。 每个回合都要对选手按照当前的分数进行排序。之后第a[i]个选手与第a[i + 1]个选手打。谁的能力强谁的分数加一,输的一方原创 2016-06-14 21:07:35 · 1119 阅读 · 0 评论