阿牧路泽

哪有那么多坚强,无非是死扛罢了
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

随笔分类 -  经典算法

摘要:斐波那契查找 在介绍斐波那契查找算法之前,我们先介绍一下很它紧密相连并且大家都熟知的一个概念——黄金分割。 黄金比例又称黄金分割,是指事物各部分间一定的数学比例关系,即将整体一分为二,较大部分与较小部分之比等于整体与较大部分之比,其比值约为1:0.618或1.618:1。 0.618被公认为最具有审 阅读全文

posted @ 2018-10-16 17:07 阿牧路泽 阅读(538) 评论(0) 推荐(0)

摘要:插值查找 在介绍插值查找之前,首先考虑一个新问题,为什么上述算法一定要是折半,而不是折四分之一或者折更多呢? 打个比方,在英文字典里面查“apple”,你下意识翻开字典是翻前面的书页还是后面的书页呢?如果再让你查“zoo”,你又怎么查?很显然,这里你绝对不会是从中间开始查起,而是有一定目的的往前或往 阅读全文

posted @ 2018-10-16 16:31 阿牧路泽 阅读(208) 评论(0) 推荐(0)

摘要:二分查找 说明:也称折半查找,元素必须是有序的,如果是无序的则要先进行排序操作。 基本思想:也称为是折半查找,属于有序查找算法。用给定值k先与中间结点的关键字比较,中间结点把线形表分成两个子表,若相等则查找成功;若不相等,再根据k与该中间结点关键字的比较结果确定下一步查找哪个子表,这样递归进行,直到 阅读全文

posted @ 2018-10-16 16:03 阿牧路泽 阅读(245) 评论(0) 推荐(0)

摘要:顺序查找 说明:顺序查找适合于存储结构为顺序存储或链接存储的线性表。 基本思想:顺序查找也称为线形查找,属于无序查找算法。从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相比较,若相等则表示查找成功;若扫描结束仍没有找到关键字等于k的结点,表示查找失败。 复杂度分析: 查找成 阅读全文

posted @ 2018-10-16 13:23 阿牧路泽 阅读(546) 评论(0) 推荐(0)

摘要:一、基数排序介绍 基数排序(Radix Sort)是桶排序的扩展,它的基本思想是:将整数按位数切割成不同的数字,然后按每个位数分别比较。具体做法是:将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成 阅读全文

posted @ 2018-10-15 09:23 阿牧路泽 阅读(403) 评论(1) 推荐(0)

摘要:一、桶排序介绍 桶排序(Bucket Sort)的原理很简单,它是将数组分到有限数量的桶子里。 假设待排序的数组a中共有N个整数,并且已知数组a中数据的范围[0, MAX)。在桶排序时,创建容量为MAX的桶数组r,并将桶数组元素都初始化为0;将容量为MAX的桶数组中的每一个单元都看作一个"桶"。在排 阅读全文

posted @ 2018-10-14 22:41 阿牧路泽 阅读(181) 评论(0) 推荐(0)

摘要:一、归并排序介绍 将两个的有序数列合并成一个有序数列,我们称之为"归并"。归并排序(Merge Sort)就是利用归并思想对数列进行排序。根据具体的实现,归并排序包括"从上往下"和"从下往上"2种方式。1. 从下往上的归并排序:将待排序的数列分成若干个长度为1的子数列,然后将这些数列两两合并;得到若 阅读全文

posted @ 2018-10-14 22:38 阿牧路泽 阅读(270) 评论(0) 推荐(0)

摘要:一、堆排序介绍 堆排序(Heap Sort)是指利用堆这种数据结构所设计的一种排序算法。 我们知道,堆分为"最大堆"和"最小堆"。最大堆通常被用来进行"升序"排序,而最小堆通常被用来进行"降序"排序。鉴于最大堆和最小堆是对称关系,理解其中一种即可。本文将对最大堆实现的升序排序进行详细说明。 最大堆进 阅读全文

posted @ 2018-10-14 22:37 阿牧路泽 阅读(201) 评论(0) 推荐(0)

摘要:一、选择排序介绍 选择排序(Selection sort)是一种简单直观的排序算法。它的基本思想是:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小(or最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 二、 阅读全文

posted @ 2018-10-12 17:55 阿牧路泽 阅读(240) 评论(0) 推荐(0)

摘要:一、希尔排序介绍 希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 希尔排序实质上是一种分组插入方法。它的基本思想是:对于n个待排序的数列,取一个小于n的整数gap(gap被称为步长)将待排序元素分成 阅读全文

posted @ 2018-10-12 17:52 阿牧路泽 阅读(722) 评论(0) 推荐(0)

摘要:一、直接插入排序介绍 直接插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n 阅读全文

posted @ 2018-10-12 17:46 阿牧路泽 阅读(436) 评论(0) 推荐(0)

摘要:一、快速排序介绍 快速排序(Quick Sort)使用分治法策略。它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 阅读全文

posted @ 2018-10-12 17:41 阿牧路泽 阅读(369) 评论(0) 推荐(0)

摘要:一、冒泡排序简介 它是一种较简单的排序算法。它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾! 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有 阅读全文

posted @ 2018-10-12 16:58 阿牧路泽 阅读(176) 评论(0) 推荐(0)