算法初探
文章平均质量分 55
_CodeCAT_
吾忘初心,方得始终!
展开
-
算法初探——动态规划
动态规划算法设计 把原始问题分解成子问题,这里和分治法对于子问题的处理方式不同,分治法是将原问题分解成子问题后递归求解,而动态规划算法对于每个子问题仅求解一次原创 2015-08-22 21:23:36 · 754 阅读 · 1 评论 -
算法初探——归并排序
原理:假设初始记录序列含有n个记录,则可以看出是n个序列的子序列,每个子序列的长度为1,然后两两归并,得到【n/2】(向上取整)个长度为2或者1的子序列,再通过两两归并………直到得到一个长度为n的子序列。过程如下图所示: 归并算法是建立在递归操作上的一种排序算法,是分治思想的典型应用。原创 2016-04-09 21:12:26 · 597 阅读 · 0 评论 -
算法初探——希尔排序
希尔排序(Shell Sort)是D.L.Shell于1959年提出的一种排序算法,可以称之为第一批突破O(n^2)的排序算法。实质为分组的插入排序先将整个待排序的序列根据增量分割成若干个子序列,分别进行直接插入排序,然后缩减增量,继续排序。直接盗图 O(∩_∩)O~ 上面的示例中,序列的长度为10: 第一趟排序的gap(增量为5),对所有分组完成插入排序,完成后将增量减半gap=gap/2=2原创 2016-04-09 20:15:28 · 824 阅读 · 0 评论 -
算法初探——插入排序
插入排序(Insertion Sort)是一种玩扑克的时候用的方法,我们摸牌时已经抽到的牌我们已经排好序了,抽上来一张新牌,我们一般不会直接放在最后,等全部抽完之后再进行排序,而是抽上来之后立刻放到对应的位置。 可以看GIF图了 抽牌的顺序就是 6 5 3 1 8 7 2 4这里需要注意的操作是如何做到将新插入的记录放到它应该待的地方,而保证放好后序列依旧是有序的?以3为例,当检测到它之前的原创 2016-04-09 17:39:04 · 434 阅读 · 0 评论 -
算法初探——选择排序
选择排序(Selection Sort)就是通过n-1次关键字之间的比较,从n-i+1个记录中选择出最小的记录,并和第i个记录做交换。 简单来说就是 ①从第i个记录向后找一个最小的值 ②将找到的记录与第i个记录交换即可 ③重复上述步骤直至整个序列排序完成 找不到动态图了郁闷(:зゝ∠) 就只能自己画图了原创 2016-04-09 16:37:52 · 516 阅读 · 0 评论 -
算法初探——冒泡排序
无论使用何种语言,在学习数组的时候我们接触的第一个算法都会是这个排序算法。它有个好听的名字冒泡排序。冒牌排序(Bubble Sort) 一种交换排序,它的基本思想就是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录。原创 2016-04-09 16:11:19 · 379 阅读 · 0 评论 -
算法初探——查找算法(顺序,折半)
查找排序是比较常用的算法,查找的方法很多这里先介绍两个最简单的查找方法,顺序表查找和折半查找。顺序查找(Sequential Search)又名线性查找,是最基本的查找技术,它的查找方式为:从表中第一个(或最后一个)开始,最后逐个进行记录的关键字和给定值做比较,若某个记录的关键字和给定值相等,则查表成功,如查表找到第一个记录,若关键字和给定值的比较都不等时,查找不成功。 折半查找(Binary原创 2016-03-12 10:24:13 · 960 阅读 · 0 评论 -
算法初探——快速排序
快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。基本思想 ①先从数列中取出一个数作为基准数; ②分区过程,将比这个数大的数全部放到它的右边,小于等于它的数放到它的左边;...原创 2016-03-13 16:01:38 · 670 阅读 · 1 评论 -
算法初探——分治法
分治法的算法设计划分、把整个问题划分成若干子问题 求解 合并分析过程建立递归方程,求解原创 2015-08-20 19:45:18 · 757 阅读 · 0 评论 -
算法初探
算法算法和数据结构作为编程学习的一部分,没有算法的程序即没有灵魂。在数学和计算科学中,算法作为一个计算的具体步骤,常用于计算、数据处理和自动推理等。 最早的算法为欧几里德提出的“求最大公因子的算法”——即我们都非常熟悉的辗转相除法。算法分析·算法的正确性原创 2015-08-20 19:00:12 · 681 阅读 · 0 评论 -
算法初探——堆排序
堆可以说是一种数据结构,但似乎又不完全是,它本质上是一棵完全二叉树堆需要满足以下两个·条件: ①父节点的键值总是大于或等于(小于等于)任何一个子节点的值。 ②每个结点的左右子树依旧是一个二叉堆。当父节点的键值总是大于等于子节点的是最大堆;当父节点的键值总是小于等于任何一个子结点的是最小堆。堆的存储结构这样的储存结构有极为重要的特点:① 结点 i 的父节点为 ( i - 1)/2;原创 2016-04-10 20:49:57 · 587 阅读 · 0 评论