堆排序是利用堆进行排序的高效算法,其能实现O(NlogN)的排序时间复杂度,具体算法分析可以点击堆排序算法时间复杂度分析。
算法实现:
调整堆:
void sort::sink(int* a, const int root, const int end)
{
int i=root;
while(2*i +1 <= end)
{
int k = 2*i+1;
if(k+1<=e...
分类:
编程语言 时间:
2014-11-16 23:09:56
阅读次数:
447
当数据太大,内存要求紧,整数范围小时,存在不能用快排的情况,这时可用计数排序。
#include
#include
#include
inline int readint(){
char c=getchar();
while(!isdigit(c)) c=getchar();
int x=0;
while(isdigit(c)) {
x=x*10+c-'0...
分类:
编程语言 时间:
2014-11-08 15:19:58
阅读次数:
194
1.背景《算法》一书中提到了关于算法的一些基本思想优秀的算法因为能够解决实际的问题而变得更为重要; 高效算法的代码可以很简单; 理解某个实现的性能特点是一项有趣而令人满足的挑战; 在解决同一个问题的多种算法之间进行选择时,科学方法是一项重要工具; 迭代式改进能够让算法效率越来越高; 使用union-...
分类:
编程语言 时间:
2014-11-02 01:54:43
阅读次数:
326
在信息学竞赛中,尤其是考试的时候,经常会出现把水题写水的情况,而题目那一两个单薄的测试数据常常不足以让我们发现自己程序中的BUG。在竞赛时,水题悲剧了的话下场一定会很惨。在这种情况下,我们可以采用写一个对拍程序的方法来大大降低出错的可能。基本思路 是对于一道题目来讲,写出高效算法后,时间充裕的情况下...
分类:
其他好文 时间:
2014-10-29 18:39:34
阅读次数:
452
“SQL性能优化是一种黑魔法就像炼金术一样:各种配方难解晦涩,只有一小部分圈内人才能理解。”这是一种误解,SQL数据库使用的是大家公知的算法来实现可以预期的执行性能。然而,问题是,人们很容易写出不能发挥最高效算法的SQL查询语句,因而也容易产生无法预期的性能结果。下面是5道关于SQL性能优化小测试题...
分类:
数据库 时间:
2014-10-23 15:50:46
阅读次数:
146
多层次报表是很常见的报表形式,如分组报表和主子报表。其中的关联运算(组与明细,主表和子表),由于有层次而不能直接在数据库中完成,需要在报表端完成。但报表端一般只用采用排序和遍历的方法实现关联,性能较差。利用润乾集算报表的层次数据集则可以在数据源计算过程中就完成关联计算,并且有层次的结果集直接传送给报表呈现,在关联计算中充分利用集算器的高效算法,从而达到优化性能的目标。...
分类:
其他好文 时间:
2014-10-22 11:08:47
阅读次数:
244
一、基本概念
在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)。
二、基本思想及策略
分治法设计思想:将一个难以直接解决的大问题,...
分类:
编程语言 时间:
2014-10-20 15:11:29
阅读次数:
218
一、基本概念在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立...
分类:
其他好文 时间:
2014-09-06 10:56:23
阅读次数:
263
【思路】a^b = c等价于a^c = b 所以枚举a和c,而a和c全部枚举肯定TLE,所以高效算法:通过c是a的约数这个关系来枚举会减小循环,必须要将c放在循环外面,因为c的情况比较少。其实本题就是要求:c=a-b(规律),c=a^b
以下是高神的AC代码,很好很强大:
#include
#include
#include
#include
using namespace s...
分类:
其他好文 时间:
2014-08-12 17:09:14
阅读次数:
199
这道题是树状数组的题,但是用普通数组也能整出来,没学树状数组,就用的普通数组,算是高效算法吧,下面是我的修改思路:
1.一上来我写了如下代码:把每个新加进去的数压入vector,但是我在当t=1时,我的想法是将v[i]一个一个加上去,这样肯定会超时,而且我这个方法的sum是最后一起求的,这样多了个循环,又耗费时间。
#include
#include
#include
#include
#in...
分类:
其他好文 时间:
2014-08-08 12:39:25
阅读次数:
305