![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
algorithm
霁空
这个作者很懒,什么都没留下…
展开
-
算法 - 排序 - 排序算法总结
1. 算法分类十种常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。比较与非比较比较:快速排序、归并排序、堆排序、冒泡排序在排序的最终结...转载 2020-03-05 17:24:00 · 141 阅读 · 0 评论 -
算法 - 排序 - 基数排序
1. 原理基数排序又称为“桶子法”,从低位开始将待排序的数按照这一位的值放到相应的编号为0~9的桶中。等到低位排完得到一个子序列,再将这个序列按照次低位的大小进入相应的桶中,一直排到最高位为止,数组排序完成。LSD——从低位向高位排MSD——从高位向低位排时间复杂度:O(N*digit)空间复杂度:O(N)稳定性:稳定2. 算法执行步骤(1)遍历序列找出最大的数(...转载 2020-03-05 16:44:01 · 108 阅读 · 0 评论 -
算法 - 排序 - 桶排序
1. 简介桶排序(Bucket sort)是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。工作原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序。9.1 算法描述设置一个BucketSize,作为每个桶所能放置多少个不同数值设置一个定量的数组当作空桶;遍历...转载 2020-03-05 00:33:54 · 145 阅读 · 0 评论 -
算法 - 排序 - 计数排序
1. 原理计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。计数排序(Counting sort)是一种稳定的排序算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。它只能对整数进行排序。...转载 2020-03-04 14:44:47 · 135 阅读 · 0 评论 -
算法 - 排序 - 堆排序
1. 简介堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:1.堆中某个节点的值总是不大于或不小于其父节点的值;2.堆总是一棵完全二叉树。常见的堆有二叉堆、斐波那契堆等。堆的定义:n个元素的序列{k1,k2,ki,…,kn}...转载 2020-03-04 13:56:26 · 135 阅读 · 0 评论 -
算法 - 排序 - 快速排序
1. 原理 快速排序,说白了就是给基准数据找其正确索引位置的过程. 如下图所示,假设最开始的基准数据为数组第一个元素23,则首先用一个临时变量去存储基准数据,即tmp=23;然后分别从数组的两端扫描数组,设两个指示标志:low指向起始位置,high指向末尾.首先从后半部分开始,如果扫描到的值大于基准数据就让high减1,如果发现有元素比该基准数据的值小(如上图中18<=...转载 2020-03-03 23:48:29 · 137 阅读 · 0 评论 -
算法 - 排序 - 希尔排序
1. 原理希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序是把记录按下表的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,...转载 2020-03-03 23:00:29 · 109 阅读 · 0 评论 -
算法 - 排序 - 插入排序
1. 原理插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。源于优先级序列:第一阶段是将为排序数据加...转载 2020-03-03 21:50:50 · 126 阅读 · 0 评论 -
算法 - 排序 - 选择排序
1. 原理表现最稳定的排序算法之一,因为无论什么数据进去都是O(n2)的时间复杂度,所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。理论上讲,选择排序可能也是平时排序一般人想到的最多的排序方法了。选择排序(Selection-sort)是一种简单直观的排序算法。工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序...转载 2020-03-03 21:09:03 · 120 阅读 · 0 评论 -
算法 - 排序 - 冒泡排序
1. 原理冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢**“浮”**到数列的顶端。2. 算法描述比较相邻的元素:如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到...转载 2020-03-03 20:51:13 · 108 阅读 · 0 评论 -
算法 - 排序 - 归并排序
1.基本思想归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。分而治之可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采用迭代的方式去实...转载 2020-03-02 15:51:37 · 113 阅读 · 0 评论