python算法
brucewong0516
这个作者很懒,什么都没留下…
展开
-
【python算法】算法之线性增长与二次方增长小实验举例
假如要生成一个列表的反序列,可以先生成一个空的列表,再将一堆数字添加进来,然后用reverse取反就可以得到。如果是现实的问题,比如获取的外部数据,为了实现最近优先的原则,将数字被添加到列表后的顺序是反的,可以将上述的思路中将数据添加到列表后取反即可。当然还有另外的思路,就是我们将最近的数据插入到列表的起始位置,可以用insert函数进行操作即可,代码可以精简。两种思路实例测试:In原创 2018-01-18 23:34:38 · 1066 阅读 · 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 · 629 阅读 · 0 评论 -
【python】选择排序法改进
选择排序法改进思路:如果每轮只找最小值,效率较低,可以考虑每次同时寻找最小值和最大值;并且在某一轮如果最小值与最大值相同,说明剩下的数字都相同,可以直接结束。实现逻辑:与选择排序不同的是,需要考虑到如果第i轮里,恰好第i个数就是最大值时先交换minindex和i之后,最大值的下标变成了minindex这时候应该交换minindex和n-i-1,而不是maxindex和n-i-1。...原创 2018-11-29 16:36:47 · 1221 阅读 · 0 评论 -
【python】选择排序算法
排序算法的逻辑非常简单:首先搜索整个列表,找到最小项的位置,如果该位置不是列表的第1项,就交换这两个位置的元素。然后从列表的第2个元素开始,重复上述过程,直到算法达到整个过程的最后一个位置.循环复杂度:函数包括一个嵌套的循环,对于大小为n的列表,外围的循环执行n-1次;内部循环的次数从n-1递减到1;因此,选择排序在各种情况下的复杂度为平方阶。from swax_functio...原创 2018-11-29 16:39:15 · 941 阅读 · 0 评论 -
【python】冒泡排序
冒泡排序:从列表的开头处开始,逐个比较一对数据项,如果顺序不对就交换两项位置,直到移动到列表的末尾。这个过程的效果就是将最大的项以冒泡的方式排到算法的末尾。然后算法从列表开头到倒数第二项重复这一过程,依次类推。与简单选择排序的比较:冒泡排序也是一个嵌套的循环,如果列表是已经排好序的,冒泡排序不会执行任何的交换;在最坏的情况下,为平方阶复杂度。from swax_functio...原创 2018-11-29 16:41:24 · 1124 阅读 · 0 评论 -
【python】双向冒泡排序
冒泡排序法:冒泡排序存在所谓的“乌龟问题”,假设我们需要将序列按照升序排序。序列中的较小的数字又大量存在于序列的尾部,这样会让小数字在向前移动得很缓慢,因此针对这一问题,产生了双向冒泡排序法,也称鸡尾酒排序法。双向冒泡排序法:由两个方向同时进行冒泡:首先由左向右为大元素移动方向,从右向左为小元素移动方向,然后每个元素都依次执行。在第i次移动后,前i个和后i个元素都放到了正确的位...原创 2018-11-29 16:42:55 · 3944 阅读 · 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 · 965 阅读 · 0 评论