图解算法python
小闪电E
这个作者很懒,什么都没留下…
展开
-
1. 二分查找
1 2 自a的,不够简略 def binary_search(alist, target): '''''' ''' 二分查找: 每次都取中间下标的值和目标值比较 小了右移low 大了左移high ''' if alist == []: # 空列表要用[],用None识别不了 r...原创 2019-09-07 11:41:20 · 108 阅读 · 0 评论 -
2. 选择排序
2 [自a] def select_sort(alist): n = len(alist) for i in range(n-1): max_pos = i # 重要:因为下面的max_pos在if里,可能执行不到,导致后面下标max_pos没有创建 for j in range(i+1, n): if alist[j] ...原创 2019-09-07 14:34:40 · 80 阅读 · 0 评论 -
3. 递归
''' 递归: 下面的代码都是每次先扒拉出去第一个元素 之后就不用管第一个了 无限去分解 除去1第一个的右半部分 ''' def sum(list): if list == []: return 0 return list[0] + sum(list[1:]) '''计算列表中的元素总个数''' def right_count(list)...原创 2019-09-08 13:51:00 · 85 阅读 · 0 评论 -
4. 快速排序
1 算法图解 时间复杂度同老式快排,因为老式快排一轮也是要扫所有元素 【这个代码 优点:极易理解 [自猜]缺点:扫完小于基准的,扫大于的时候要重复扫小于的,会浪费时间?】 def quick_sort(list): '''基线条件''' if len(list) <= 1: return list # 基线 只执行一侧的quick_sort(small) ,...原创 2019-09-08 14:28:26 · 65 阅读 · 0 评论 -
5. 散列表
1 电话簿 ———— 涉及各种散列表的基本核心操作 【重要】 """ 收获: 1 print内部前面无括号 print('%s 的 电话号 是 %s' % (name, phone)) 4 input进来的都是str 比对时 要数字就int() 或者 用=='单引号' 2 phoneBook = dict()创建散列表 可不是dict = {} 【list = []是正确的...原创 2019-09-08 16:35:13 · 75 阅读 · 0 评论