随笔分类 - Algorithm
摘要:二分查找是一种在有序数组中查找某一特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组已经为空,则表示找不到指定的元素。这
阅读全文
摘要:堆是具有以下性质的完全二叉树,每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图: 同时,我们对堆中的结点按层进行编号,将这种逻辑结构映射到数组中就是下面这个样子: 该数组从逻辑上讲就是一个堆结构,我们用简单的公式来描述一下堆的
阅读全文
摘要:图片素材与文字描述来自:尚硅谷-韩顺平数据结构与算法。 1、基本思想 归并排序是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各个结果有序的合并在
阅读全文
摘要:快速排序(Quicksort)是对冒泡排序的一种改进。 1、基本思想 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以 递归进行,以此达到整个数据变成有序序列。 2、算法描述 快速排序使用
阅读全文
摘要:希尔排序是先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。 1、基本思想 将待排序数组按照步长gap进行分组,然后将每组的元素利用直接插入排序的方法进行排序;每次再将gap折半减小,循环上述操作;当gap=1时,利用
阅读全文
摘要:目前HailStone序列还未被证明是否有穷,所以它未必是一个算法。
阅读全文
摘要:1、基本思想 将数组中的所有元素依次跟前面已经排好的元素相比较,如果选择的元素比已排序的元素小则依次交换,直到出现比选择元素小的元素或者全部元素都比较过为止。 2、算法描述 ①. 从第一个元素开始,该元素可以认为已经被排序; ②. 取出下一个元素,在已经排序的元素序列中从后向前扫描; ③. 如果该元
阅读全文
摘要:1 基本思想 在未排序序列中找到最小元素,存放到未排序序列的起始位置。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种算法,需要对比len-n-1次,但是只交换1次或者0次。 2 算法描述 ①. 从待排序列中,找到最小的元素; ②. 如果最小元素不是待排序列的第一个,将其和第一个
阅读全文
摘要:冒泡排序( Bubble Sort)是一种简单的排序算法。它重复访问要数列, 一次比较两个元素,如果他们的顺序错误就把交换过来。访问数列工作是 一次比较两个元素,如果他们的顺序错误就把交换过来。访问数列工作是 一次比较两个元素,如果他们的顺序错误就把交换过来。访问数列工作是 重复地进行直到没有再需要
阅读全文
摘要:算法包含三要素:计算,计算模型,算法。 1、计算 计算:即信息处理。借助某种工具,遵照一定规则,以明确而机械的形式进行。 2、计算模型 计算机:即信息处理工具。 3、算法 所谓算法,即特定计算模型下,旨在解决特定问题的指令序列。 输入:待处理的信息(问题); 输出:经处理的信息(答案); 正确性:可
阅读全文
摘要:1、大O表示法 表示程序的执行时间或占用空间随数据规模的增长趋势。 算法操作 时间复杂度 线性查找 O(n) 二分查找 O(logn) 无序数组插入 O(1) 无序数组删除 O(n) 有序数组插入 O(n) 有序数组删除 O(n) 冒泡排序 O(n2) 2、时间复杂度 时间复杂度,又称"渐进式时间复
阅读全文