![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序
文章平均质量分 51
三茶先生
life is so long,bu needs you to face~
展开
-
sort函数
头文件: #include using namespace std; 1.默认的sort函数是按升序排。对应于1) sort(a,a+n); 2.可以自己写一个cmp函数 例如: int cmp( const int &a, const int &b ){ if( a > b ) return 1; else return 0; } sort(a,a+n,cmp)原创 2016-07-06 16:31:58 · 257 阅读 · 0 评论 -
poj2388Who's in the Middle(快速排序)
Who’s in the Middle Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 42776 Accepted: 24737 DescriptionFJ is surveying his herd to find the most average cow. He wants to know ho原创 2017-07-16 20:54:06 · 200 阅读 · 0 评论 -
poj2299Ultra-QuickSort(归并排序+树状数组)
Ultra-QuickSort Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 61630 Accepted: 22882 DescriptionIn this problem, you have to analyze a particular sorting algorithm. The algor原创 2017-07-16 20:52:45 · 247 阅读 · 0 评论 -
csu1804: 有向无环图(拓扑排序+dp)
1804: 有向无环图 Submit Page Summary Time Limit: 5 Sec Memory Limit: 128 Mb Submitted: 573 Solved: 245 Description Bobo 有一个 n 个点,m 条边的有向无环图(即对于任意点 v,不存在从点 v 开始、原创 2017-04-28 16:45:47 · 367 阅读 · 0 评论 -
1035. 插入与归并(25)
插入与归并(25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 根据维基百科的定义:插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。归并排序进行如下迭代操作:首先将原始序列看成N个只原创 2017-03-20 22:42:30 · 198 阅读 · 0 评论 -
快速排序
快速排序思想:一个数组元素,排列,想要将其有序的顺序排列 做法: 1.先从数列中取出一个数作为基准数。 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 3.再对左右区间重复第二步,直到各区间只有一个数。在取基数时我们可以将其看作是挖了一个坑 例如:82 3 6 5 4 7 19 i初始时为1,j为9,我们将第一个元素挖掉,也就是说第一个元素现在是一个坑,有原创 2017-03-10 17:40:46 · 181 阅读 · 0 评论 -
大顶堆(堆排序)
其基本思想为(大顶堆):1)将初始待排序关键字序列(R1,R2....Rn)构建成大顶堆,此堆为初始的无序区;2)将堆顶元素R[1]与最后一个元素R[n]交换,此时得到新的无序区(R1,R2,......Rn-1)和新的有序区(Rn),且满足R[1,2...n-1]<=R[n]; 3)由于交换后新的堆顶R[1]可能违反堆的性质,因此需要对当前无序区(R1,R2,......Rn-1)调整为新堆,然后原创 2017-01-01 19:53:34 · 858 阅读 · 0 评论 -
交换排序
冒泡基本思想: 在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。 void exchangesort(int a[],int n)//改进版的冒泡 { int i=n-1; while(i>0) { int k原创 2017-01-09 15:47:21 · 269 阅读 · 0 评论 -
选择排序
基本思想:在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。#include<cstring> #include <cstdio> using namespace std; int sortdex(int a[],int n,int i)原创 2017-01-07 22:32:06 · 146 阅读 · 0 评论 -
插入排序
基本思想:将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。 要点:设立哨兵,作为临时存储和判断数组边界之用。#include <cstdio> #include <cstring> using namespace std; int main() { int a[100原创 2017-01-06 21:38:44 · 268 阅读 · 0 评论 -
基数排序
第一步 以LSD为例,假设原来有一串数值如下所示: 73, 22, 93, 43, 55, 14, 28, 65, 39, 81 首先根据个位数的数值,在走访数值时将它们分配至编号0到9的桶子中: 0 1 81 2 22 3 73 93 43 4 14 5 55 65 6 7 8 28 9 39原创 2017-09-27 10:27:14 · 198 阅读 · 0 评论