算法--基于python
《算法图解》
程序员neil
知行合一
展开
-
快速排序--python
快速排序,采用分而治之的策略,在数组里找一个基准值,遍历数组,小于基准值的,放到less数组中,大于基准值的放到greater数组中,将原来的数组,不断的分成小的数组,直到数组只剩下一个元素,即:存在数组array = [5, 1, 3, 4, 2]选择基准值array[0], 因为数组元素会不断变少,基准值也在不断变化,所以选择相对值[0],第一次分组:less=[1, 3, 4, 2], pivot=5, greater=[]第二次分组:less=[], pivot=1, greater原创 2022-05-17 15:19:45 · 216 阅读 · 0 评论 -
递归函数里面的return详解
递归里面的return,因为不断的调用己身,每次调用都是运行一次函数。原创 2022-05-09 17:15:50 · 4516 阅读 · 0 评论 -
分而治之,一种著名的递归式问题解决方法。D&C(divide and conquer)
长1680m, 宽640m,可以划出的最大方块是长640,宽640,同时余下一块地,长1040,宽640,这时,还可以划出一个最大方块,同样也是长640,宽640,同时余下一块地,长640,宽400,对于长240, 宽160的土地,可以从中划出的最大方块长160,宽160,余下土地长160, 宽80,因为160是80的整数倍,将这块土地分成两个方块后,将不会余下任何土地。再次使用同样的算法,对于长640,宽400的土地,可以从中划出的最大方块长400,宽400,余下土地长400, 宽240;原创 2022-05-09 15:51:58 · 610 阅读 · 2 评论 -
递归的使用--基于python
递归,即不断的调用己身,直到找到自己需要的东西。必要的2个条件:1.基线条件:触发后函数不再调用自己,跳出循环;2.递归条件:函数调用自己;二者缺一不可。代码说明如下:# 简单示例def count(i): if i <= 0: # 基线条件, 若i <= 0时,跳出调用自己 return else: count(i-1) # 递归条件,i > 0时,调用自己, 注意,入参是基于基线条件的入参,每次必定变化原创 2022-05-06 13:11:45 · 458 阅读 · 0 评论 -
选择排序详解
选择排序详解原创 2022-01-19 23:04:42 · 96 阅读 · 0 评论 -
二分查找详解
二分查找是一种算法,其输入是一个有序的元素列表。如果要查找的元素包含在列表中,二分查找返回其位置;否则返回null。下面的示例说明了二分查找的工作原理,随便想一个1-100的数字,目标是以最少的次数猜到这个数字。每次猜测后,会提示小了、大了,或对了。使用二分查找时,每次都猜中间的数字,从而每次都将余下的数字排除一半。过程如下:100个元素>50>25>13?7>4>2>1.代码:def binary_search(list, item)...原创 2020-08-20 15:22:35 · 349 阅读 · 0 评论