
算法
纳尔逊皮卡丘
吾生也有涯,而知也无涯。以有涯随无涯,殆已!已而为知者,殆而已矣!
展开
-
Python实现选择排序
选择排序(Selection sort)选择排序:一种简单直观的排序算法。工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余的未排序的元素中继续寻找最小(大)元素,然后放到已排序的末尾。直到所有元素均排序完毕。优点:选择排序与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被一道其最终位原创 2017-11-22 20:17:46 · 9627 阅读 · 2 评论 -
Python实现归并排序
归并排序归并排序是典型的分治法的应用思想:先递归分解数组,再合并数组原理:将数组分解最小之后,然后合并两个有序数组,基本思想是比较两个数组的最前面的数,谁小就取谁,取完后,将相应的指针后移以为。然后再比较,直到一个数组为空,最后把另一个数组的剩余部分复制过来即可。Python代码实现:# 归并排序def merge_sort(alist): if len(原创 2017-11-27 09:21:26 · 4489 阅读 · 3 评论 -
Python实现希尔排序
希尔排序(Shell Sort)希尔排序是插入排序的一种,也称为缩小增量排序,是直接插入排序的一种更加高效的改进版。是一种非稳定排序算法。原理:希尔排序把记录按下标的一定增量分组,对每组使用直接插入排序算法排序,随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰好被分成一组,算法便终止。基本思想:把数组列在一个表中并对列分别进行插入排序,重复这个过程,不过每次用更长原创 2017-11-25 14:51:56 · 4080 阅读 · 0 评论 -
Python实现快速排序
快速排序(QuickSort)工作原理:通过一次排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后按照这种方法对两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。实现步骤:1)从数列中挑出一个元素,当做基准2)重新排序数列,所有元素比基准小的摆放在基准前面,所有比基准大的摆在基准的后面(想同的数可以到任一原创 2017-11-25 14:40:17 · 4145 阅读 · 0 评论 -
Python实现插入排序
插入排序(Insertion Sort):插入排序是一种简单直观的排序算法。工作原理:通过构建有序序列,对于未排序的数据,在已排序序列中从后向前进行扫描,找到相应位置并插入。插入排序,在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。Pyhton代码实现:# 插入排序# order 默认为True 表示升序;False 表示降序def i原创 2017-11-25 14:29:28 · 3998 阅读 · 0 评论 -
算法与数据结构
算法的概念算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务,一般,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供以后再调用。算法重要的是其的思想,而不是其所实现的某种语言,它是独立存在的一种解决问题的方法和思想。算法的特性输入:算法具有0个或多个输入输出:算法至少有1个或多个输出原创 2017-11-20 19:40:47 · 3127 阅读 · 0 评论 -
Python栈数据结构的实现
栈结构:stack生活例子:电梯栈的特点:先进后出(FirstInLastOut,简称FILO)栈的基本用法:push(入栈:添加元素) pop(出栈:删除元素) size(返回栈的大小) is_empty(判断栈是否为空) empty(清空栈) top(返回栈顶元素)# -*- coding:utf-8 -*-# 利用python的列表来模拟一个栈结构class My原创 2017-11-20 19:49:49 · 3097 阅读 · 0 评论 -
Python数据结构队列的实现
队列结构:queue 生活例子:排队买票队列的特点:先进先出(FirstInFirstOut,简称FIFO)队列的基本用法:push(入队:添加元素) pop(出队:删除元素)队列:Push、Pop、队列的大小、是否为空队列、清空队列 先进先出 双端队列:两端都能进,都能出class Queue(object): # 先进先出 # 在Python中用列表模拟原创 2017-11-20 20:02:22 · 3380 阅读 · 0 评论 -
Python实现冒泡排序
冒泡排序(Bubble Sort)冒泡排序,是一种简单的排序算法。通过重复遍历要排序的数列,一次比较两个元素,如果顺序错误,就将其做交换,重复进行直到没有再需要交换,说明数列已经排序完成了思路(升序):1)比较相邻的元素,如果第一个比第二个大,交换位置2)对每一对相邻的元素做同样的工作,从开始第一对到结尾最后一对,这一步完成后,最后的元素会是最大的数。3)针对所有的元素重复以上原创 2017-11-22 20:05:19 · 5680 阅读 · 0 评论 -
Python实现深度遍历和广度遍历
深度遍历:原则:从上到下,从左到右逻辑(本质用递归):1)、找根节点2)、找根节点的左边3)、找根节点的右边class Node(object): def __init__(self, item=None, left=None, right=None): self.item = item self.left = left原创 2017-11-27 21:07:16 · 5759 阅读 · 0 评论