![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 77
kwang0131
这个作者很懒,什么都没留下…
展开
-
《算法(第四版)》排序-----模板
本书对排序类算法有一个模板,包括了以下几种方法:(1)sort():这个方法里面实现的就是排序的算法(2)less():这个方法里是利用了Comparable接口里的compareTo方法,其中compareTo方法对于本对象与传入的比较对象小于,等于,大于,分别返回负数,0,正数 这个方法如果compareTo方法结果为负数就返原创 2016-04-01 21:45:36 · 1827 阅读 · 1 评论 -
《算法(第四版)》排序-----选择排序
选择排序从字面的解释就是先从一个数组中选择出一个,然后再按照一定规则选择出一个,直到全选择完,也就拍完序了。具体解释如下:(以升序为例)step1:先取出数组的第一个元素a[0],然后再后面是所有数据选择,只要有比a[0]小的值,那就把最小值的坐标更新,等全部比较完,把a[0]和a[min]交换step2:在取出a[1],按照第一步的规律,在a[1]后面找比a[1]小的,然后把最小值的原创 2016-04-01 21:59:50 · 541 阅读 · 0 评论 -
《算法(第四版)》排序-----插入排序
插入排序:插入排序与选择排序一样,当前索引左边的所有元素都是有序的,但和选择排序不一样的是它们的位置不是固定的,可能为了更小的元素腾出空间,它们向后移动,但是当索引达到数组的右端时,数组排序就完成了使用插入排序为一列数字进行排序的过程具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序取出下一个元素,在已经排序的元素序列中从后向前扫描如果该元素(已排序)大于原创 2016-04-01 22:47:56 · 635 阅读 · 0 评论 -
《算法(第四版)》排序-----希尔排序
由“插入排序”可知,它是一种不稳定的算法,当序列已经接近有序时,排序速度较快,但是如果最小的在最后面,那可能需要最小的交换了n-1次才能换到最前面。希尔排序在插入排序的基础上进行了改进,交换不相邻的元素,以对数组的局部进行排序,并最终用插入排序将局部有序的数组排序,具体做法如下。1.假设数组长度为N,先以较大的增量gap将N进行划分几组,例如数组为{2,4,8,1,9,10,5,6,7,3原创 2016-04-02 21:49:47 · 944 阅读 · 1 评论 -
《算法(第四版)》排序-----归并排序
归并排序基本原理是将两个有序的数组,在合并的过程中进行排序成一个更大的有序数组。归并排序的时间复杂度为NlogN,缺点是需要额外的内存空间归并排序的实现方法是:创建一个适当大小的数组然后将两个输入数组中的元素一个个从小到大的放入这个数组中。将两个数组抽象化的归并方法如下:方法名为merge(a,lo,mid,hi),它会将子数组a[lo...mid] a[mid+原创 2016-04-06 14:56:09 · 2696 阅读 · 1 评论 -
《算法(第四版)》排序-----快速排序
参考文章: http://ahalei.blog.51cto.com/4767671/13652851.概念快速排序,听这个名字就能想到它排序速度快,它是一种原地排序(只需要一个很小的辅助栈,注意不是数组),且将长度为N的数组排序所需的时间和NlgN成正比缺点是:非常脆弱,在实现时一定要注意几个小细节(下面详细讲),才能避免错误。2.基本思想:随机找出一个数原创 2016-04-07 14:33:34 · 10639 阅读 · 1 评论 -
《算法(第四版)》排序-----优先队列
在实际应用中,我们常常不一定要求整个数组全部有序,或者不需要一次就将它们排序,可能只需要当前数组的键值最大的元素或最小的元素,这时就类似于总在处理下一个优先级最高的元素,在这种情况下一个合适的数据结构应该支持两种操作:删除最大元素和插入元素。这种类型叫做优先队列 实现这种数据结构的方法有两种,一种是简单的数组或链表来实现,一种是具有高效的二叉堆来实现,在本文中我们就是采用二叉堆来实现的。原创 2016-04-08 22:02:04 · 1558 阅读 · 0 评论 -
《算法(第四版)》排序-----堆排序
1.什么是堆?讲堆排序之前,先了解一下什么是堆。堆其实相当于一种数据结构,它的本质是一种数组对象,但是它里面的内同又是一颗完全二叉树结构,它的特点是父节点的值大于(或小于)两个子节点的值,常常用于优先队列、堆排序等。堆在数组中的索引有如下的特点。数组索引为k的元素,它的父节点的索引为[k/2](下取整),它的两个子节点索引为2k, 2k+1,依次类推2.堆排序的基本过程(1原创 2016-04-09 12:00:45 · 1632 阅读 · 0 评论