
算法
萧逸才
这个作者很懒,什么都没留下…
展开
-
算法之选择排序
原理 每次从剩下的元素中选择最大/最小的元素进行交换,随着排序的进行,每次需要检查的元素数在逐渐减少,最后一次需要检查的元素都只有一个。 第一次需要检查n个元素,但随后检查的元素数依次为n 1, n – 2, …, 2和1。平均每次检查的元素数为1/2 × n,因此运行时间为O(n × 1/2 × n)即O(n × n)或O(n 2 )。 代码public class Selectio原创 2017-04-08 13:03:40 · 241 阅读 · 0 评论 -
算法之冒泡排序
原理 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作原创 2017-04-08 13:32:29 · 261 阅读 · 0 评论 -
算法之快速排序
原理 快速排序是一种常用的排序算法,比选择排序快得多。快速排序采用递归的方法,因此,基线条件为数组为空或只包含一个元素。在这种情况下,只需原样返回数组——根本就不用排序。对于长度超过1的数组则要使用分而治之的思想,因此需要将数组分解,直到满足基线条件。 步骤如下: 首先,从数组中选择一个元素,这个元素被称为基准值(pivot)。 找出比基准值小的元素以及比基准值大的元素。这被称为分区(parti原创 2017-04-08 14:16:42 · 331 阅读 · 0 评论 -
算法之二分查找
二分查找 二分查找是一种算法,其输入是一个有序的元素列表。如果要查找的元素包含在列表中,二分查找返回其位置;否则返回null。 假设现在需要在英文字典中查找单词*,以下有两种解决方案: - 1、从字典的头部(尾部和头部一样,暂不考虑)开始一个一个查找; - 2、从字典的中间开始查找,根据翻开的单词来判断你要找的单词在左半边还是右半边(字典是有序的),然后重复2;效率 方法 时间复杂原创 2017-04-05 21:46:03 · 324 阅读 · 0 评论 -
算法之广度优先搜索
查找最短路径 广度优先搜索可回答两类问题: 第一类问题:从节点A出发,有前往节点B的路径吗? 第二类问题:从节点A出发,前往节点B的哪条路径最短? 数据结构 队列:队列是一种先进先出(First In First Out,FIFO)的数据结构,如果你将两个元素加入队列,先加入的元素将在后加入的元素之前出队。 图:图(有向图)由节点和边组成。一个节点可能与众多节点直接相连,这些节点被称原创 2017-04-15 18:28:28 · 337 阅读 · 0 评论