随笔分类 -  Python实现算法

摘要:快速排序 快速排序就是快 排序思路 取一个元素p(第一个元素),使元素p归位; 列表被p分成两部分,左边的数一定不大于p,右边的数一定不小于p; 递归完成排序。 Python代码示例: 阅读全文
posted @ 2018-09-12 20:08 BabyJoy❤️ 阅读(124) 评论(0) 推荐(0)
摘要:时间复杂度是用来评估算法运行时间的一个式子(单位)。 一般来说,时间复杂度高的算法比复杂度低的算法慢。 长见的时间复杂度(按效率排序):O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n2logn) < O(n3) 不常见的时间复杂度:O(n!) O(2n) 阅读全文
posted @ 2018-09-11 21:15 BabyJoy❤️ 阅读(83) 评论(0) 推荐(0)
摘要:lst = [i for i in range(20, 0, -1)] length = len(lst) r = length // 2 while r: for i in range(length - r): if lst[i] > lst[i + r]: lst[i], lst[i + r] = lst[i + r], lst[i] ... 阅读全文
posted @ 2018-09-05 19:56 BabyJoy❤️ 阅读(114) 评论(0) 推荐(0)
摘要:首先,归并排序使用了二分法,归根到底的思想还是分而治之。拿到一个长数组,将其不停的分为左边和右边两份,然后以此递归分下去。然后再将它们按照两个有序数组的样子合并起来。这样说起来可能很难理解,所以 图就来了:归并排序将数组以中间的值进行拆分,最后分到最细之后再将其使用对两个有序数组进行排序的方法对其进 阅读全文
posted @ 2018-09-02 15:43 BabyJoy❤️ 阅读(133) 评论(0) 推荐(0)
摘要:斐波那契数列是学计算机非常非常经典的一道题目! 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数 阅读全文
posted @ 2018-08-07 21:23 BabyJoy❤️ 阅读(2336) 评论(0) 推荐(0)
摘要:二分查找:每次能够排除掉一半的数据,查找的效率非常高,但是局限性比较大。必须是有序序列才可以使用二分查找。1.非递归算法 def binary_search(lis, nun): left = 0 right = len(lis) - 1 while left lis[mid]: # 如果查询数字比中间数字大,那么去二分后的右边找 left =... 阅读全文
posted @ 2018-08-06 21:41 BabyJoy❤️ 阅读(273) 评论(0) 推荐(0)
摘要:# 排序是编程必会的,这是两个经典的简单排序 冒泡排序 选择排序 阅读全文
posted @ 2018-07-12 15:54 BabyJoy❤️ 阅读(129) 评论(0) 推荐(0)