摘要: 计数排序 现在有一个列表,已知列表中的数范围都在0到100之间。设计算法在O(n)时间复杂度内将列表进行排序。 创建一个列表,用来统计每个数出现的次数。 li = [1, 5, 3, 8, 2, 8, 3, 7, 5] def count_sort(li, max_num=100): count = 阅读全文
posted @ 2020-05-14 22:25 静静别跑 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 快速排序 流程 快速排序算法通过多次比较和交换来实现排序,其排序流程如下: 首先设定一个分界值,通过该分界值将数组分成左右两部分。 将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值。 然后,左边和 阅读全文
posted @ 2020-05-14 21:58 静静别跑 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 插入排序 列表被分为有序区和无序区两个部分。最初有序区只有一个元素。 每次从无序区选择一个元素,插入到有序区的位置,直到无序区变空。 【就好比打牌,摸牌,手里的牌是有序的,桌子上的牌是无序的,从桌子上最上面摸一张牌,插入到手里的牌里面】 代码关键点: 摸到的牌 手里的牌 图一: 红色有序区, 白色无 阅读全文
posted @ 2020-05-14 21:01 静静别跑 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 选择排序 一趟遍历记录最小的数,放到第一个位置; 再一趟遍历记录剩余列表中最小的数,继续放置; ........ 问题是:怎么选出最小的数?代码关键点: 无序区 最小数的位置 python代码实现: li = [9, 2, 3, 7, 5, 6, 4, 8, 1] def select(lst): 阅读全文
posted @ 2020-05-14 20:42 静静别跑 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 算法关键点: 无序区 有序区 冒泡排序 列表每两个相邻的数,如果前边的比后边的大,那么交换这两个数……(升序,大的放后面) 代码关键点: 趟 无序区 (红色表示有序去,白色表示无序区) python代码实现: li = [9, 2, 3, 4, 5, 6, 7, 8, 1] def foo(li): 阅读全文
posted @ 2020-05-14 20:28 静静别跑 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 现有一个问题: 给一个列表,以及一个元素,返回: 元素的下表或未查找到元素 1. 顺序查找 从列表第一个元素开始,顺序进行搜索,直到找到为止。 时间复杂度:O(n) 2. 二分查找 从有序列表的候选区data[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半。示例:列表[1, 阅读全文
posted @ 2020-05-14 20:22 静静别跑 阅读(145) 评论(0) 推荐(0) 编辑
摘要: https://www.bilibili.com/read/cv6044849?uc_share_depth=1 阅读全文
posted @ 2020-05-14 11:16 静静别跑 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 博客:带图 https://blog.csdn.net/superwangxinrui/article/details/79626870 尾递归python:https://blog.csdn.net/chuwei4749/article/details/100684043 循环python:htt 阅读全文
posted @ 2020-05-14 03:27 静静别跑 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 博客:https://www.cnblogs.com/chengxiao/p/6194356.html https://www.cnblogs.com/piperck/p/6030122.html python实现: def merge(left, right): """ params: left= 阅读全文
posted @ 2020-05-14 01:14 静静别跑 阅读(145) 评论(0) 推荐(0) 编辑