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[0]
#print(A)
if(j == i):

本文详细记录了Coursera算法课程中关于分治法的第四周学习内容,主要包括随机选择算法及其平均复杂度分析,以及解决最小路径问题的contraction算法。随机选择算法通过选择枢轴并排序,实现平均复杂度为O(N)的选取。对于最短路径问题,介绍了邻接矩阵和邻接表两种表示,并提出了概率上能找到最小路径的contraction算法,其时间复杂度为O(N^2M)。
最低0.47元/天 解锁文章
492

被折叠的 条评论
为什么被折叠?



