
Python算法
a_small_python
能力一般,水平有限,如有错误,欢迎指正~~~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
搜索算法01----顺序搜索最小项
为了简单,函数处理的是一个整数列表。这个算法假设列表不为空,并且其中的项的顺序是随机的。过程:1.讲列表的第一项当作最小项2.向右搜索以寻找更小的项3.若找到了,则将最小项的位置重置为当前位置4.return最小值def ourMin(lyst): minpos = 0 current = 1 while current < len(lyst): if...原创 2018-02-11 15:34:18 · 406 阅读 · 0 评论 -
搜索算法02----有序列表的二叉搜索
对于有序的列表(假设升序),我们可以估计目标项的大概位置。根据这一思路,我们能省去一些不必要的过程以达到快速搜索的目的。过程:1.找到列表的中间位置并与目的项进行比较。如果相等,则返回改位置2.若不相等,假设目标项小于当前项,那么算法将搜索中间位置以前的部分,并重复上述操作(反之亦反)def binarySearch(target, lyst): """Returns the positi...原创 2018-02-11 15:57:47 · 307 阅读 · 0 评论 -
基本排序算法01----选择排序(selection sort)
可能最简单的排序策略就是:1.搜索整个列表,找到最小项的位置2.如果该位置不是列表的第一项,则将两项交换位置3.然后算法回到第二个位置并重复上述操作4.当算法到达列表最后一个位置的时候,排序就完成了首先我们需要定义一个用于交换位置的函数def swap(lyst, i, j): """Exchanges the elements at positions i and j.""" t...原创 2018-02-11 16:23:44 · 261 阅读 · 0 评论 -
基本排序算法02----冒泡排序(bubble sort)
过程:1.从列表的开头处开始,比较前两项数据2.若这两项数据的顺序不正确(假定要求按升序排列),则调换位置3.接下来比较第二、三项数据,重复操作,以此类推4.当进行到最后两项数据时,列表中最大的数据就已经交换到最后一项,此时第一轮运行结束,第n项数据排序完成5.从列表的开头至第n-1项,进行第2轮排序,第2轮结束后第n-1项至第n项的排序就完成了6.以此类推,直到排序结束以下是函数代码def bu...原创 2018-02-11 16:57:18 · 307 阅读 · 0 评论 -
基本排序算法03----插入排序(insertion sort)
思路: 1.在第i轮通过列表的时候(1 <= i <= n-1),第i个项应该插入到列表的前i个项之中的正确位置 2.在第i轮之后,前i个项的顺序已经排好 以下是函数代码,我们设计的是一个升序排列的函数 def insertionSort(lyst): i = 1 while i < len(lyst): #将待插入的项赋值给ite...原创 2018-02-11 17:27:33 · 210 阅读 · 0 评论 -
基本排序算法04----快速排序(quick sort)
快速排序:在快速排序中,我们用到了‘分而治之’的思想。也就是说,每一个算法都找到了一种方法,将列表分解为更小的子列表。随后,这些字列表再递归地排列。快速排列的过程如下:1.从列表的中点位置选取一项(我们把这一项称之为基准点pivot)2.将列表中的项进行分区,以便小于基准点的所有项都移动到基准点的左边,而剩下的移动到右边3.对于在基准点分割形成的子列表,递归重复上述过程4.每次遇到少于两项的一个子...原创 2018-02-11 17:56:25 · 271 阅读 · 0 评论 -
基本排序算法05----合并排序(merge sort)
合并排序的算法利用了递归、分而治之的思想。我们假设列表的长度为偶数对其过程进行分析:1.计算一个列表的中间位置,将其分割为两个子列表2.重复上述操作,直至子列表的长度为13.将长度为1的两个子列表通过比较之后进行排序,合并成一个长度为2的列表4.将长度为2的两个子列表重复上一步操作,以此类推合并排序的实现我们需要定义4个函数1.mergeSort用于用户调用2.merge用于合并过程3.merge...原创 2018-02-13 21:18:22 · 321 阅读 · 0 评论