![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法-数据结构
Zaratustra
不能听命于自己者,就要受命于他人
展开
-
排序算法(二)-选择排序
0. 原理选择排序和冒泡排序一样是一种简单直观的排序算法,工作原理如下:在未排序序列中找到最大或者最小的数字,放到最前或者最后的位置再从剩余的序列中找到最大或者最小的数字,放到剩余序列的最前或者最后的位置重复操作直到序列有序对[2, 8, 1, 5, 3]这个数组排序,完整流程如下round 1 start2 8 1 5 3 (exchange data: 2 <-> 1) 1 8 2原创 2017-09-16 20:59:34 · 325 阅读 · 0 评论 -
排序算法(三)-插入排序
0. 原理插入排序和冒泡排序以及选择排序的原理也比较相似,不过和他们元素交换的思想有点不同,就是插入不再是元素之间的交换,而是将排序的过程转换为在有序序列中插入元素的过程。具体的流程如下(方便理解,我们默认将序列从小到大排列):第一个数字看成是一个有序序列取出第二个数字插入到第一个元素中,如果第二个数字大于第一个数字,则数字位置不变,否则则插入到第一个数字前面。重复上述过程,取出第三个数字,根原创 2017-09-16 21:00:09 · 269 阅读 · 0 评论 -
排序算法(四)-Shell排序
0. 原理Shell排序是插入排序的变种,因D.L.Shell提出而得名。Shell排序对数据进行分组,然后对每一组数据进行排序,在每一组数据都有序之后再对所有分组利用插入排序进行最后一次排序,这样能减少数据交换次数,加快排序速度。确定分组规则,一般根据排序数组长度每次折半,但是必须要保证最后一次分组的间隔为1分完组后,就是对每一组内部进行排序重复上述过程,直到进行完间隔为1(也就是插入排序)原创 2017-09-16 21:01:02 · 443 阅读 · 0 评论 -
排序算法(五)-快速排序
0. 原理快速排序是一种划分交换排序,采用了分治法。分治法将原问题分解为若干规模更小,但是结构和原问题相似的子问题,递归求解子问题,最后将子问题的解组合在一起则是原问题的解。划分,选择一个基准,以此基准将当前的无序序列划分为左右两个部分,并使得左边子区间内的数字全部小于基准,右边子区间内的数字全部大于基准求解,递归调用对左右子区间在进行分解操作当子区间只有一个数字时,递归结束,此时的序列就是有原创 2017-09-16 23:49:08 · 450 阅读 · 0 评论 -
排序算法(六)-归并排序
0.原理归并排序的基本思想是分治法。先将无序序列分为若干个无序子序列,然后对无序子序列进行排序,最后合并有序子序列,得到完全有序的序列。这就是分解,求解,合并的过程。将待排序序列data[0,1,2….n-1]看成是n个长度为一的序列,将相邻序列进行合并,得到n/2个长度为2的有序序列;将相邻序列再次进行合并,得到n/4个长度为4的有序序列重复第一步和第二步,直到得到长度为n的一个有序序列,此原创 2017-09-17 17:12:34 · 334 阅读 · 0 评论 -
排序算法(七)-堆排序
1. 原理1.1 什么是堆要理解堆排序,首先要先理解什么是堆。堆是一颗顺序存储的完全二叉树,堆又分为最大堆和最小堆。完全二叉树:设二叉树的深度为h,除h层外,其他各层的节点数都达到最大个数,第h层的所有节点都连续集中在最左边。最小堆:每个节点的值都不大于其子节点的值的完全二叉树最小堆:每个节点的值都不小于其子节点的值的完全二叉树根据上面的描述我们可以用一个数学描述来定义最大最小堆:对于数组[原创 2017-09-17 17:12:58 · 525 阅读 · 0 评论 -
排序算法(八)-基数排序
1. 原理基数排序不需要直接比较数值的大小和直接在序列中交换数据,这个其他的排序算法有很大的不同,它是根据数字中各位的值,通过对其进行分配收集来实现排序的。基数排序的原理很简单易懂,下面给出一个示例应该就能理解了。 对于[29, 9, 14, 87, 92, 199, 283, 183, 65, 43, 6 ,3]这个序列进行LSD基数排序:计算出这个序列中最大数的位数,可知是283,位数为3原创 2017-09-17 17:13:30 · 402 阅读 · 0 评论 -
排序算法(一)-冒泡排序
0. 原理临近的数字两两比较,按照从小到大或者从大到小的顺序进行交换。每一趟会将最大或者最小的数字放到最终结果的位置重复操作直到倒数第二位对[2, 8, 1, 5, 3]这个数组排序,完整流程如下round 1 start2 8 1 5 3 (exchange data: 3 <-> 5) 2 8 1 3 5 2 8 1 3 5 (exchange data: 1 <-> 8)原创 2017-09-16 00:23:53 · 309 阅读 · 0 评论