堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先解说下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是全然二叉树或者是近似全然二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)不论什么一个子节点的键值。2.每一个结点的左子树和右...
分类:
编程语言 时间:
2015-03-11 10:40:57
阅读次数:
127
题意:
输入n个柱子,并排放。问最大的矩形面积。
要维护两个单调队列,lft和rit。lft [i]表示i点,左边连续有比i点高的柱子的话,把最左边的柱子编号记录在lft [i]。 rit 同理,记录i的最右边连续比i高的柱子的编号。
第一个案例:
id 1 2 3 4 5 6 7
h 2 1 4 5 1 3 3
lft 1 1 3 4 1 6 6
rit 1 7 4 4 7 7 7
有了lft 和rit 就可枚举每一列计算那一列向两遍扩展的最大的宽了。再乘上该列的高,就是包含该列的最大的面积了。...
分类:
其他好文 时间:
2015-03-10 23:19:06
阅读次数:
400
Ultra-QuickSortTime Limit: 7000MSMemory Limit: 65536KTotal Submissions: 45290Accepted: 16440DescriptionIn this problem, you have to analyze a particul...
分类:
编程语言 时间:
2015-03-10 22:46:25
阅读次数:
275
这场考试当年还参加了,当时直接用内置的排序了,否则自己写归并排序浪费时间啊,现在来练习一发。估计又有些节点没在链表里面,当时没考虑这个情况,所以一直有些case没过#include #include #include #include using namespace std;class Node {...
分类:
其他好文 时间:
2015-03-10 13:56:37
阅读次数:
153
??
1.归并排序
《算法导论》P19
参考网址:
白话经典算法系列之五 归并排序的实现 - MoreWindows Blog -
博客频道 - CSDN.NET
http://blog.csdn.net/morewindows/article/details/6678165
#include "stdafx.h"
#i...
分类:
编程语言 时间:
2015-03-10 10:24:52
阅读次数:
241
gamefrye归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(DivideandConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序的..
分类:
编程语言 时间:
2015-03-10 01:33:38
阅读次数:
178
最近开学了,又复习了下数据结构与算法,我在MOOC上学的。这次是清华oj平台上的一题。题目:范围查询(Range) 主要数据量略大...
分类:
其他好文 时间:
2015-03-10 01:30:51
阅读次数:
170
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3743 题目意思就是给你一个长为n的序列,让你求逆序对.我用的是归并排序来求的.归并排序有一个合并的过程,分前后两段,当a[i] > a[j]时,说明a[j]比前面那段啊[i],a[i+1],a[i+2]...
分类:
编程语言 时间:
2015-03-10 00:09:28
阅读次数:
190
快速排序、归并排序、堆排序三种排序算法的性能谁最好呢?网上查了一下说快速排序最快、其次是归并排序,最差的是堆排序;而理论上三种排序算法的时间复杂度都是O(nlogn),只不过快速排序最差的会达到O(n^2),但是数据的随机性会消除这一影响,今天就来实际比较一下: 1 #include 2 #i...
分类:
编程语言 时间:
2015-03-09 22:06:15
阅读次数:
213
如果归并排序中待归并的两个相邻序列分别Wi是r[start]~r[mid]和r[mid+1]~r[end],需要将其归并成一个新序列r1[start]~r1[end]:void merge(int r[], int r1[], int start, int mid, int end)
{
int i = start, j = mid + 1, k = start;
while (i...
分类:
编程语言 时间:
2015-03-09 19:12:33
阅读次数:
164