python
鸭梨山大哎
life hard take it easy
展开
-
Python实现斐波那契数列
定义斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)python 实现def fib(n): if n == 0:原创 2021-05-19 21:53:47 · 509 阅读 · 0 评论 -
Python实现归并排序
就像前面说的那样,分而治之是一种通常能够开发出高效算法的技术。假设你和一个朋友一起尝试把一副扑克牌按照顺序进行排序。你可以通过将这副牌分成两半来分解问题,这样的话,每个人都将会对其中一半的扑克牌进行排序。这样一来,你就只需要再去找出一个能够组合两个有序堆的方法。将两个有序列表组合成单个有序结果的过程被称为归并(merging)。因此,对于我们分而治之的算法来说,它被称为归并排序(mergesort)。这个算法如下所示:把数组分成两部分对左半部分排序对右半部分排序把排序好的两部分合并算法的第一步原创 2021-05-19 00:06:25 · 494 阅读 · 1 评论 -
递归实现二分搜索(python)
既然你已经知道了应该如何来实现递归函数,现在就可以回过头再去看看我们的二分搜索了。回忆一下,这个算法的基本思想是查看中间值,然后通过递归来搜索列表的下半部分或上半部分。递归的基本情况是我们可以停止递归的条件,也就是找到目标值或者是找不到地方的时候。递归调用每次都会将问题的大小减半。因此,我们需要为每个递归调用都指定一下列表中仍然需要被“执行”的位置的范围。我们可以通过这样的方式来实现:把低索引(low)和高索引(high)作为参数与列表一起进行传递。然后保证在每次调用的时候,都只在列表的低索引和高索引之间原创 2021-05-18 23:33:37 · 3813 阅读 · 0 评论 -
递归的应用之字符串反转
Python列表内置了一个可以用来反转列表的方法。假设你要让字符串反转,一种比较高效的办法是,把字符串转换为字符列表,之后反转这个列表,再然后将列表转换回字符串。然而,如果使用递归的话,我们就能够非常轻松地编写出一个直接使字符串反转的函数,而不必用列表来作为中间存储。这样做的基本思想是:把字符串当作一个递归对象。一个大的字符串是由若干个较小的对象组成的,而且这些对象也是字符串。实际上,一种能够把几乎所有序列都进行拆分的非常方便的方法是:把它的第一个元素当作单独的存在,而这个元素的后面则恰好紧跟着另一个原创 2021-05-18 23:18:25 · 3501 阅读 · 0 评论 -
Python实现选择排序
代码如下a = [2, 40, 74, 10, 60, 50]n = len(a)for i in range(n): min_idx = i # 最小值索引 for j in range(i + 1, n): # 从未排序的部分找出最小值,并记住其索引 if a[j] < a[min_idx]: min_idx = j a[i], a[min_idx] = a[min_idx], a[i] # 最小值与已排序好的交换位置原创 2021-05-18 22:46:22 · 146 阅读 · 0 评论 -
python实现冒泡排序
a=[2,40,74,10,60,50]n=len(a)for i in range(n): for j in range(n-i-1): if a[j]>a[j+1]: a[j],a[j+1]=a[j+1],a[j]print(a) # [2, 10, 40, 50, 60, 74]总结相邻元素交换了解python交换的特殊写法参考 java 冒泡排序_鸭梨的博客-CSDN博客...原创 2021-05-18 22:34:05 · 147 阅读 · 0 评论