码迷,mamicode.com
首页 > 编程语言 > 详细

其他的一些利用了分治算法的2

时间:2017-10-27 01:38:55      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:log   with   第k大   操作   blog   直接   开始   text   自己   

Question:

Find the kth largest element in an unsorted array. Note that it is the kth largest element in
the sorted order, not the kth distinct element.
INPUT: An unsorted array A and k.
OUTPUT: The kth largest element in the unsorted array A.

分析:

记该未排序的数组为A

随机生成一个数X,遍历数组A,将小于X的数放入数组A1中,大于等于X的数放入数组A2中(A1与A2仍为无序数组),获取A1与A2的长度,记为len1与len2,若要查找的第k大的元素,其k大于len1,则要寻找的数肯定在数组A2中,则再在A2中进行如上操作,反之则在A1中进行如上操作,如果,恰巧k=len1,则随机到的这个X即为要寻找的第k大的数

伪代码

 1 Function getKthNumber(A,len,k)
 2 Random x
 3 for i←0 to len do
 4         if A[i]<x then
 5             put in A1
 6         else put in A2
 7         end if
 8 end For
 9 len1←len(A1)
10 len2←len(A2)
11 if k=len1 then
12         return x
13 elseif  k>len1  then
14         k←k-len1
15 getKthNumber(A2,len2,k) 
16 else
17 getKthNumber(A1,len1,k)
18 end If
19 end Function

Question2:

Consider an n-node complete binary tree T, where n = 2d ?? 1 for some d. Each node v of
T is labeled with a real number xv. You may assume that the real numbers labeling the nodes
are all distinct. A node v of T is a local minimum if the label xv is less than the label xw for
all nodes w that are joined to v by an edge.
You are given such a complete binary tree T, but the labeling is only speci ed in the following
implicit way: for each node v, you can determine the value xv by probing the node v. Show
how to nd a local minimum of T using only O(log n) probes to the nodes of T.

分析:

从树T的根节点开始,将它的大小与自己的子节点比较,若它最小,则直接返回它,否则,看左右节点哪个小,将它当作子树的顶点,重复以上操作。

伪代码:

1 Function FindMin(T)
2 If  min(get(T.root),get(T.left),get(T.right))==get(t.root)  then
3         Return  T.root
4 Elseif  get(T.left)<get(T.right)  then
5         FindMin(T.left)
6 Else
7         FindMin(T.right)
8 Endif
9 endFunction

 

其他的一些利用了分治算法的2

标签:log   with   第k大   操作   blog   直接   开始   text   自己   

原文地址:http://www.cnblogs.com/babetterdj/p/7740107.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!