coursera 课程 algorithm divide and conquer 第四周笔记(含算法代码)

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

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值