数据结构
不正经的蒙娜丽莎
天行健,君子以自强不息
展开
-
BFPRT算法详细解析
概念 BFPRT算法即是选取中位数的中位数的方式,找出数组n个元素中第k大的数。我们可以根据快速排序得到该值,但是快速排序的平均复杂度为O(nlog(n)),最坏时间复杂度为O(n^2)。而堆排序也是一个较好的方法,维护一个大小为k的堆,时间复杂度为O(nlog(k))。而BFPTR算法。它的最坏时间复杂度为O(n)。 ⌈⌉ ⌊⌋ BFPRT算法原理 之前讲过一篇文章关于快速排序文章,我们便继续从那里开始引入。快速排序的大致过程如下: 先从序列中选取一个数最为基准数 将比这个数大的数全部放到它的右边,把小原创 2020-12-26 09:27:30 · 1115 阅读 · 0 评论 -
详彻快速排序原理分析
归并排序不足之处 约翰.冯.诺伊曼(John von Neumann)在1945年提出归并排序,其时间复杂度为(nlogn),但归并排序不是原地排序算法,空间复杂度比较高,是O(n)。所以托尼.霍尔(Tony Hoare)在1961年提出快速排序,最差:O(n²),期望O(nlogn). 数组划分原理 选取固定位置主元x(如尾元素) 维护两个部分的右端点变量i,j 考察数组元素A[j],只和主元比较 把主元放在中间作分界线 &nb原创 2020-10-01 19:24:38 · 696 阅读 · 0 评论