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

1栈的面试题&卡塔兰数

2树

B树的插入删除&B R 树 http://www.jb51.cc/article/p-xkwsakbr-dk.html

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操作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐