【MIT 公开课】Computer Science and Programing Lession 10

本文详细介绍了分治算法及哈希算法的基本原理与应用。分治算法通过递归分解问题来降低复杂度,例如归并排序;而哈希算法则通过构建哈希表实现快速查找。此外还涉及了Python中的异常处理与断言使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.分治算法:不断缩小问题的规模的算法。如二分法查找,归并排序。
如下是归并排序算法,主要思想为:先将一个列表分成左右两个列表,再左右分别继续分,直至分成每个列表中只有一个元素,再将两个列表进行归并排序,层层merge到最后左右两个列表进行merge。
def merge(left,right):
"""Assumes left and right are sorted lists.
Returns a new sorted list containing the same elements
as (left + right) would contain."""
  result = []
  i,j = 0, 0
  while i < len(left) and j < len(right):
    if left[i] <= right[j]:
      result.append(left[i])
      i = i + 1
    else:
      result.append(right[j])
      j = j + 1
  while (i < len(left)):
    result.append(left[i])
    i = i + 1
  while (j < len(right)):
    result.append(right[j])
    j = j + 1
  return result
def mergesort(L):
"""Returns a new sorted list with the same elements as L"""
  print L
  if len(L) < 2:
    return L[:]
  else:
    middle = len(L) / 2
    left = mergesort(L[:middle])
    right = mergesort(L[middle:])
    together = merge(left,right)
    print 'merged', together
    return together
复杂度为O(nlogn)
二.哈希算法:复杂度为常数的一个搜索算法,python实现字典的算法。是一种以空间换时间的算法
哈希表就是一种以 键-值(key-indexed) 存储数据的结构,我们只要输入待查找的值即key,即可查找到其对应的值。在构造这种特殊的“查找表” 时,需要选择一个“好”(尽可能少产生冲突)的哈希函数。
哈希算法的更多内容参考http://blog.youkuaiyun.com/tanggao1314/article/details/51457585
三.python的异常和断言
异常:try...except
断言:assert 断言是一句必须等价于布尔真的判定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值