给定线性序集中n个元素和一个整数k,1le;kle;n,要求找出n个元....pptVIP

  • 315
  • 0
  • 约3.89千字
  • 约 16页
  • 2019-04-18 发布于安徽
  • 举报

给定线性序集中n个元素和一个整数k,1le;kle;n,要求找出n个元....ppt

* 给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出n个元素中第k小的元素,k=(n+1)/2称为中位数。 线性时间选择 特殊情况下的线性时间算法: 1、最大、最小元素:线性扫描,O(n) 2、k≤n/logn或k≥n-n/logn :堆排序算法O(n+klogn)=O(n) 一般情况下的选择问题如何解决? 用快速排序算法思想,对输入数组进行递归划分,不同的是它只对划分出的子数组之一进行递归处理。 * private static Comparable randomizedSelect(int p,int r,int k) { if (p==r) return a[p]; int i=randomizedpartition(p,r); j=i-p+1; // i左边的元素个数 if (k=j) return randomizedSelect(p,i,k); else return randomizedSelect(i+1,r,k-j); } 在最坏情况下,算法randomizedSelect需要O(n2)计算时间。 但可以证明,算法randomizedSelect可以在O(n)平均时间内找出n个输入元素中的第k小元素。 线性时间选择 * 如果能在线性时间内找到一个划分基准,使得按这个基准

文档评论(0)

1亿VIP精品文档

相关文档