
python算法
brucewong0516
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【python算法】算法之线性增长与二次方增长小实验举例
假如要生成一个列表的反序列,可以先生成一个空的列表,再将一堆数字添加进来,然后用reverse取反就可以得到。如果是现实的问题,比如获取的外部数据,为了实现最近优先的原则,将数字被添加到列表后的顺序是反的,可以将上述的思路中将数据添加到列表后取反即可。 当然还有另外的思路,就是我们将最近的数据插入到列表的起始位置,可以用insert函数进行操作即可,代码可以精简。 两种思路实例测试: In原创 2018-01-18 23:34:38 · 1203 阅读 · 0 评论 -
【python算法】为了找到最小的可分配ID实例
根据实践需求构建算法思路: 加入我们使用非负整数作为某个系统的ID,所有用户都有一个ID唯一确认。任何时间,这个系统中的有些ID都处于使用中的状态,有些ID则可以分配给新的用户。现在我们就是为了找到最小的可分配ID #首先假定list1为已分配的ID库 list1 = list(range(100000)) list1.remove(9) #定义一个bbb查找最小可分配ID的函数 def原创 2018-01-19 20:48:02 · 693 阅读 · 0 评论 -
【python】选择排序法改进
选择排序法改进思路: 如果每轮只找最小值,效率较低,可以考虑每次同时寻找最小值和最大值; 并且在某一轮如果最小值与最大值相同,说明剩下的数字都相同,可以直接结束。 实现逻辑: 与选择排序不同的是,需要考虑到如果第i轮里,恰好第i个数就是最大值时 先交换minindex和i之后,最大值的下标变成了minindex 这时候应该交换minindex和n-i-1,而不是maxindex和n-i-1。...原创 2018-11-29 16:36:47 · 1277 阅读 · 0 评论 -
【python】选择排序算法
排序算法的逻辑非常简单: 首先搜索整个列表,找到最小项的位置,如果该位置不是列表的第1项,就交换这两个位置的元素。 然后从列表的第2个元素开始,重复上述过程,直到算法达到整个过程的最后一个位置. 循环复杂度: 函数包括一个嵌套的循环,对于大小为n的列表,外围的循环执行n-1次; 内部循环的次数从n-1递减到1;因此,选择排序在各种情况下的复杂度为平方阶。 from swax_functio...原创 2018-11-29 16:39:15 · 983 阅读 · 0 评论 -
【python】冒泡排序
冒泡排序: 从列表的开头处开始,逐个比较一对数据项,如果顺序不对就交换两项位置,直到移动到列表的末尾。 这个过程的效果就是将最大的项以冒泡的方式排到算法的末尾。 然后算法从列表开头到倒数第二项重复这一过程,依次类推。 与简单选择排序的比较: 冒泡排序也是一个嵌套的循环,如果列表是已经排好序的,冒泡排序不会执行任何的交换; 在最坏的情况下,为平方阶复杂度。 from swax_functio...原创 2018-11-29 16:41:24 · 1171 阅读 · 0 评论 -
【python】双向冒泡排序
冒泡排序法: 冒泡排序存在所谓的“乌龟问题”,假设我们需要将序列按照升序排序。 序列中的较小的数字又大量存在于序列的尾部,这样会让小数字在向前移动得很缓慢, 因此针对这一问题,产生了双向冒泡排序法,也称鸡尾酒排序法。 双向冒泡排序法: 由两个方向同时进行冒泡: 首先由左向右为大元素移动方向,从右向左为小元素移动方向,然后每个元素都依次执行。 在第i次移动后,前i个和后i个元素都放到了正确的位...原创 2018-11-29 16:42:55 · 4075 阅读 · 0 评论 -
【python】插入排序和希尔排序
插入排序法类似打牌时候摸扑克牌整理顺序的过程,逻辑如下: 在第i轮通过列表的时候(i从1到n-1),第i项应该插入到列表的前i个项中的正确位置; 在第i轮之后,前i个项应该是排好序的; def insertion_sort(x): i = 1 while i < len(x): # i轮之前的最大的索引位置 j = i - 1 # 定...原创 2018-11-29 16:45:26 · 1024 阅读 · 0 评论