嗯,那些待我挑战的一些东西在完成《数据结构》这本书后当做复习&提升的目录

1栈的面试题&卡塔兰数

2树

3计算机内存

4Hash实现

5堆的一个用法

典型利用:

选择问题:输入N个元素以及整数K,这N个元素的集可以是全序的,找出第K个最大的元素;

算法一、

  把这些元素排序,返回第K个值,通过各种排序算法;

算法二、

  将K个元素读入数组,并将其排序,从大到小,最小的元素在第K个位置上。然后一个一个处理剩余的元素。当一个元素处理时,它先与数组中的第K个数比较,如果该元素大,将第K个数删除,将它插入到剩余的K-1个队列中,算法结束时,数组上第K个位置上的元素就为所求;该算法的时间复杂度为O(N*K);

注意:对于任意的K,我们可以求解对称问题,找出第(N-K+1)个最小元素。从而中位数K=N/2是时间使用最多的所求元素;

算法三、

  将N个元素建堆,执行K次DeleteMax操作。

相关文章

【啊哈!算法】算法3:最常用的排序——快速排序       ...
匿名组 这里可能用到几个不同的分组构造。通过括号内围绕的正...
选择排序:从数组的起始位置处开始,把第一个元素与数组中其...
public struct Pqitem { public int priority; ...
在编写正则表达式的时候,经常会向要向正则表达式添加数量型...
来自:http://blog.csdn.net/morewindows/article/details/6...