2020-wfx-第3章-分治法-3-查找-第k小元素.pptxVIP

  • 13
  • 0
  • 约小于1千字
  • 约 10页
  • 2024-06-04 发布于四川
  • 举报

2020-wfx-第3章-分治法-3-查找-第k小元素.pptx

;3.3求解查找问题——查找第k小元素;3.3.3寻找一个序列中第k小元素;5146;3.3.3寻找一个序列中第k小元素;对于序列a[s..t],在其中查找第k小元素的过程如下:

将a[s]作为基准划分,其对应下标为i。3种情况:;intQuickSelect(inta[],ints,intt,intk)//在a[s..t]序列中找第k小的元素

{inti=s,j=t,tmp;

if(st)

{tmp=a[s];

while(i!=j) //从区间两端交替向中间扫描,直至i=j为止

{while(jia[j]=tmp)j--;//从右向中间扫描,直至a[j]tmp为止

a[i]=a[j]; //将a[j]前移到a[i]的位置

while(ija[i]=tmp)i++;//从左向中间扫描,直至a[i]tmp为止

a[j]=a[i]; //将a[i]后移到a[j]的位置

}

a[i]=tmp;

if(k-1==i)returna[i];

elseif(k-1i)returnQuickSelect(a,s,i-1,k);//在左区间中递归查找

elseretur

文档评论(0)

1亿VIP精品文档

相关文档