1.随机选择
sort_algorithm 最快的算法就是 O ( n l o g ( n ) ) O(nlog(n)) O(nlog(n))
但如果直接要寻找,那最快的算法可以是 O ( N ) O(N) O(N)
selection algorithm:
random_selection(array,i)伪代码:
if len(array) = 1
return array[1]
else:
select a pivot
sort the pivot to the right place j
if (j=i) return j
if (j>i) return random_selection(array[:j],i)
else return random_selection(array[j+1:],j-i)
random select one pivot
最坏的情况:
O ( N 2 ) O(N^2) O(N2)
平均(一般)复杂度:
O ( N ) O(N) O(N)
代码实现(python):
import random
def random_selection(A,i):
length = len(A)
if(len(A) == 1):
return A[0]
else:
##随机选择一个pivot
P = random.randint(0,len(A)-1)
#print(P)
##把P排到正确的地方
(A,j) = partition(A,P)
A[0], A[j-1] = A[j-1],A