随机化选择算法

来源:互联网 发布:淘宝代销好吗 编辑:程序博客网 时间:2024/04/29 18:21

算法设计与分析这本书里面提到的随机选择算法,原来的实现是将数组分成三等份,考虑了一下,发现在实现的时候,不是很方便,因此采用的是快排的partition算法。


#!/usr/bin/pythonimport randomnumber1=[1,2,3,10,5,6,7,8,9]def randomselect(number,low,high,k):t = random.randint(low,high)number[t],number[high] = number[high],number[t];ix = partition(number,low,high)tt = ix - low + 1;if ( tt == k):return number[ix]elif(tt < k):return randomselect(number,ix+1,high,k-tt)else: return randomselect(number,low,ix-1,k)print x;def partition(number,start,end):i = start;for j in range(start,end):if(number[j] < number[end]):number[i],number[j] = number[j],number[i]i += 1number[i],number[end] = number[end],number[i]return iprint randomselect(number1,0,len(number1)-1,4)


0 0
原创粉丝点击