Python数据结构与算法
Myself2018
这个作者很懒,什么都没留下…
展开
-
四、广度优先搜索
广度优先搜索为图算法的一种,用来找出两样事物之间的最短距离。而图是由多个节点组成,为了反映节点之间的存储关系,散列表就派上用场了。 与前三种算法不同的是,前者都是基于序列表,比如数组或者列表,后者是基于散列表和队列。散列表能够将键映射到值,可以用来表达类似于“你→Bob”这样的节点关系。需要按照加入顺序检查列表中的人,否则找到的就不是最短路径,因此搜索列表必须是队列(“先进先出”)。一、过程...原创 2018-06-11 12:28:17 · 193 阅读 · 0 评论 -
一、二分排序法
一、过程:二、代码:def binary_search(list, item): low = 0 high = len(list) - 1 while low <= high: mid = int((low + high) / 2) guess = list[mid] if guess == item: ...原创 2018-05-28 22:52:26 · 1513 阅读 · 0 评论 -
二、选择排序
选择排序不同于二分排序,前者不要求初始序列是否有顺序。一、过程: 1. 每一次从序列中找到最小的元素,放在新的数组或者列表的第一位; 2. 循环重复,直到所有元素都依次排序到新的数组或者列表中; 3. 所以整个过程可拆分为两个函数,第一个为找出序列中最小的元素并返回该元素的索引,第二个为选择排序完整过程;二、代码: # 一、找到最小元素的索引def findSmallest(arr):...原创 2018-06-10 12:23:16 · 243 阅读 · 0 评论 -
三、快速排序
快速排序比选择排序更快,采用了分而治之(divide and conquer, D&C)的递归式问题解决方案。一、过程: 1. 若序列中元素数量<=1,那么就没有排序的必要,直接返回该序列即可; 2. 如果>1: 2.1. 第一步,找出基准值,即以该元素为分界点; 2.2. 第二步,分区,比基准值小的分在基准值左边,大的在右边,左右两...原创 2018-06-10 13:17:24 · 190 阅读 · 0 评论