博客
关于我
微软高频面试模拟题: 数组中第K大的元素:快速选择算法
阅读量:230 次
发布时间:2019-03-01

本文共 410 字,大约阅读时间需要 1 分钟。

快速找到第k大的数的算法

在这个问题中,我们需要找到数组中的第k大的数。传统的方法是使用快速排序来减少复杂度,这种方法的时间复杂度为O(n),因为它大约只需要常数次操作就能找到答案。

思路如下:首先选取数组中的第一个数作为基准,然后通过一次快速排序操作将其放到正确的位置。如果这个基准正好是距离右端点的第k个数,那么它就是我们要找的数。如果它距离右端点的位置比k大,则说明要找的数在基准的右边;如果距离右端点的位置比k小,则说明要找的数在基准的左边。

具体来说,我们通过递归的方式对数组进行操作。首先确定基准的位置,然后根据基准的位置和数组的长度来决定下一步的查找方向。这种方法的核心在于每次操作都尽可能地减少需要检查的范围,从而快速缩小搜索范围。

这种方法的时间复杂度为O(n),因为它每次操作都能大幅减少问题规模,避免了传统的O(n^2)复杂度。这种递归的方式类似于快速排序,其核心思想是通过分治策略来高效解决问题。

转载地址:http://ojqv.baihongyu.com/

你可能感兴趣的文章
python3.8调用m文件,调用matlab
查看>>
python3.9新特性_Python 3.9 新特性速览
查看>>
Python3.x:遍历select下拉框获取value值
查看>>
python360百科_11月编程排行榜:Python超过Java成第二
查看>>
Python关于Paginator分页函数详细解析 附实战代码
查看>>
python3、ipython3、setup-tools、pip等环境搭建详细总结
查看>>
python3下使用cv2.imwrite存储带有中文路径图片或者绝对路径图片
查看>>
python3与django中@property详解
查看>>
python3中如何表示无穷大
查看>>
Python3中提示:no module named 'wxpy'
查看>>
python3中选择文件对话框的格式打开和保存图片
查看>>
python3为什么print永远都是地址_Python3 print 函数用法总结
查看>>
Python3之uuid模块
查看>>
Python3之写入Excel文档(xlsxwriter)
查看>>
Python3之打印操作打印流重定向(下)
查看>>
python3判断字典、列表、元组为空以及字典是否存在某个key的方法
查看>>
Python3利用pymysql操作 MySQL
查看>>
python3处理json文件中含有中文dumps的应用
查看>>
Python3子进程输出
查看>>
Python3学习笔记3,变量、运算符
查看>>