选择算法

定义:

从一个大小为N的数组中,选择第K小(大)的数。

常用四种选择算法:

  • 排序
  • 改进快排
  • BFPRT算法

排序:

直接将n个数排序,可以使用归并或者快拍。
时间复杂度:O(nlogn)

堆:

维护一个K个元素的最大堆,存储当前遇到的最小的K个数(最小堆的定义)
时间复杂度:O(nlogK)

改进的快速排序:

原理也比较简单,因为快拍的划分操作确定了第j个元素,一次只需要把j和K比较一下,然后选择一边继续就可以了。
时间复杂度:平均时间复杂度为O(n),最坏情况下复杂度为O(n^2)
code

BFPRT算法

BFPRT算法提供了一种最坏情况也能在O(n)的算法。
BFPRT

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,222评论 0 52
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 1,285评论 0 2
  • 九十度对坐,氛围轻松,虽然各拿着酒杯,安安静静,可惜,忧伤的情绪却穿越了时空。其实我很讨厌这种同理心,某一些...
    玛莎Belle阅读 118评论 0 0
  • MQTT 使用源码安装 其中会需要一些依赖(编译过程找不到) 接下来就可以进行测试了 接着新建个py文件 touc...
    single430阅读 2,324评论 0 2
  • 1、付出时间与孩子建立爱的关系,而不是“控制”,应该是管教。 2、管:给予界限,配合赏罚、帮助孩子停留在界限内。 ...
    尹微优阅读 467评论 0 0