分治法之选择问题-(一).pptVIP

  • 101
  • 0
  • 约2.9千字
  • 约 13页
  • 2018-03-07 发布于河北
  • 举报
分治法之选择问题-(一)

1. 问题描述 在n个元素的表a[1:n]中确定第k小元素,1≤k≤n。 2. 设计思路 利用Partition过程。在第一次划分后划分元素v测定在a[j]的位置上,则有j-1个元素小于或等于a[j],且有n-j个元素大于或等于a[j]。此时, 若k=j,则a[j]即是第k小元素;否则, 若kj,则a[1:n]中的第k小元素将出现在a[1:j-1]中, 且仍是a[1:j-1]中的第k小元素; 若kj,则a[1:n]中的第k小元素将出现在a[j+1:n], 是a[j+1:n]中的第k-j小元素。 * 选择问题 利用Partition实现的选择算法 public static void Select(int n,int k) {//在数组a[1],…,a[n]中找第k小元素s并把它放在位置k,假设1≤k≤n。 //将剩下的元素按如下方式排列,使a[k]=t,对于1≤mk,有a[m]≤t;对于km≤n,有a[m]≥t。a[n+1]=+∞ int m,r,j; m=1;r=n+1;a[n+1]=10000; while(true) //每当进入这一循环时,1≤m≤k≤r≤n+1 { j=r; //将剩余元素

文档评论(0)

1亿VIP精品文档

相关文档