算法
记录了在学习算法的道路上学习到的东西
Jonny Jiang-zh
do what you want to do
展开
-
快速排序
快速排序 本篇内容共分两部分:分而治之,快速排序。 分而治之(divide and conquer,D & C)——种著名得递归式问题解决办法。 快速排序是一种排序算法其速度比选择排序快得多。 1. 分而治之 首先,我们申明一下D&C的工作原理: 找出简单的基线条件(跳出无限循环的条件) 确定如何缩小问题的规模,使其符合基线条件 接下来通过一个例子来说明分而治之思想。 假设,我们求数组 [1, 2, 3]所以元素的和, 我们首先使用循环来实现一下: def sum(arr): tota原创 2020-07-09 00:19:23 · 191 阅读 · 0 评论 -
递归
递归 在讲解关于递归的主要内容前,先让我们看一个gif动图。 这个动图呢很像我们平时生活中的开多个门的场景。门要开就需要关,我们开了多扇门就相应的意味着我们要关掉多少们,而且最先开的门往往最后关,最后开的门往往最先开,回想一下是不是这样子的。 以上就是递归在我们平时生活中的一个案例,接下来就是一个编程中的案例。 对于求5!,我们呢,经常用的一种方法是这样子的: def factorial(num): # 求阶乘函数 resolution = 1 for i in range(1,num):原创 2020-07-08 00:34:07 · 251 阅读 · 0 评论 -
选择排序
简单排序 简单排序,其实就是冒泡排序的一种别称,其工作原理就是:一个有n个元素的列表,经过n-1轮的排序后就是一个有序的列表,每轮选出该轮中最大/小的数填充到新的列表中,因为前n-1个已经排好序,自然而然最后一个已经好了。就好像10个高矮不一的人要排成从矮到低的列,我们就可以,第一次选出最矮的站在新的一列的第一个,然后再次选择剩下的人中最矮的接着新队列的最矮的人后面。这样,经过9轮排序后,还剩下一个最高的,肯定站在最后面,这样就排好序了。其中,n个人,每次排序最少比较0次(最后一次),最多比较n-1(第一次原创 2020-07-07 18:33:25 · 207 阅读 · 0 评论 -
二分查找
二分查找 二分查找是一种算法,它的输入是一个有序列表。如果所要查找的元素在其中就返回其位置,否则就返回None。 二分查找在生活中最常见的例子就是猜数游戏,游戏的玩法呢就是支持人给出一个数的范围,心里确定一个数,让其他人来猜。每次当有人猜错时,主持人便会告诉我们猜大了还是猜小了,相应的我们的猜数范围也跟着缩小,直至猜中那个数。 一般来说的猜数方式常见的就是挨个挨个问,比如说主持人给的数字范围是0——10,你呢第一次猜4,主持人说小了,然后你就会猜5、6…直到猜到10 。其中一共猜了7次,当然,这只是一种假设原创 2020-07-07 11:57:23 · 366 阅读 · 0 评论