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

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

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

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

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

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

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

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

你可能感兴趣的文章
org.apache.ibatis.type.TypeException: Could not resolve type alias 'xxxx'异常
查看>>
org.apache.poi.hssf.util.Region
查看>>
org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I)Lorg/apache/xmlbeans/XmlOptions;
查看>>
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /
查看>>
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:processDebugManifest'
查看>>
org.hibernate.HibernateException: Unable to get the default Bean Validation factory
查看>>
org.hibernate.ObjectNotFoundException: No row with the given identifier exists:
查看>>
org.springframework.amqp.AmqpConnectException:java.net.ConnectException:Connection timed out:connect
查看>>
org.springframework.beans.factory.BeanDefinitionStoreException
查看>>
org.springframework.boot.context.properties.ConfigurationBeanFactoryMetadata
查看>>
org.springframework.boot:spring boot maven plugin丢失---SpringCloud Alibaba_若依微服务框架改造_--工作笔记012
查看>>
SQL-CLR 类型映射 (LINQ to SQL)
查看>>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
查看>>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
查看>>
org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded
查看>>
org.tinygroup.serviceprocessor-服务处理器
查看>>
org/eclipse/jetty/server/Connector : Unsupported major.minor version 52.0
查看>>
org/hibernate/validator/internal/engine
查看>>
Orleans框架------基于Actor模型生成分布式Id
查看>>
SQL-36 创建一个actor_name表,将actor表中的所有first_name以及last_name导入改表。
查看>>