![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法-排序篇
文章平均质量分 79
TinyDolphin
这个作者很懒,什么都没留下…
展开
-
归并排序及其优化
Q:什么是归并排序? A:它是建立在归并操作上的一种有效的排序算法;是采用分治法的一个非常典型的应用;是一种稳定的基本思想要将一个数组排序,可以先(递归地)将它分成两半分别排序,然后将结果归并起来。优点?它能保证将任意长度为 N 的数组排序所需时间和 NlogN 成正比;缺点?所需的额外空间和 N 成正比。原地归并的抽象方法Q:为什么需要原地归并? A:因为用归并将一个大数组排序时,需要进行多次原创 2017-11-06 14:29:48 · 3205 阅读 · 1 评论 -
排序算法类的模板
以下是数组排序实现的框架。这段代码是我们的排序方法适用于任意实现了 Comparable 接口的数据类型。先说说几个对于所有排序算法都很重要的问题: ①、验证: 推荐在测试代码中添加一条语句 assert isSort(arr); 来确认排序后数组元素都是有序的。 ②、运行时间: 要评估算法的性能。首先,要计算各个排序算法在不同的随机输入下的基本操作的次数(包括比较和交换,或者是读写数组的次数)原创 2017-05-14 20:01:06 · 696 阅读 · 0 评论 -
选择排序及其优化方案
选择排序基本思想运行轨迹代码实现性能分析优化方案1、基本思想这是一种思路最简单的排序算法。①、找到数组中最小的那个元素 ②、将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换) ③、在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置 ④、重复执行③,直到将整个数组排序。为什么叫选择排序?就是因为它在不断地选择剩余元素之中的最小者。2、运行轨迹3、原创 2017-05-14 21:19:20 · 1784 阅读 · 0 评论 -
插入排序及其优化方案
插入排序基本思路运行轨迹代码实现性能分析优化方案1、基本思路正如生活中整理扑克的方法:一张一张的来,将每一张牌插入到其他已经有序的排中的适当位置。在计算中实现? 为了给要插入的元素腾出空间,我们需要将其余所有元素在插入之前都向右移动一位。与选择排序的相同点:当前索引左边的所有元素都是有序的,但它们的最终位置还不确定,为了给更小的元素腾出空间,它们可能会被移动。当索引到达数组的右端时,数组原创 2017-05-26 20:54:34 · 941 阅读 · 0 评论 -
希尔排序及其优化方案
希尔排序基本思路运行轨迹代码实现性能分析优化方案1、基本思路什么希尔排序? 一种基于插入排序的快速的排序算法。希尔排序为了加快速度简单的改进了插入排序,交换不相邻的元素 以对数组的局部进行排序,并最终用插入排序将局部有序的数组排序。(局部有序的数组很适合插入排序)希尔排序的思想? 使数组中任意间隔为 h 的元素都是有序的。这样的数组被称为 h 有序数组,也就是说:一个 h 有序数组就是原创 2017-05-30 22:37:37 · 2064 阅读 · 1 评论 -
快速排序及其优化
算法简介是一种分治的排序算法,特点就是快,而且效率高。基本思路通过一趟排序将待排元素分隔成独立的两部分,其中一部分元素的关键字均比另一部分的关键字小,然后分别对这两部分元素继续进行排序,以达到整个序列有序。 Q:对比归并排序,有何异同? A:快速排序和归并排序是互补的:归并排序是将数组分成两个子数组分别排序,并将有序的子数组归并以整个数组排序;而快速排序是当两个子数组都有序时,整个数组也就原创 2017-11-15 14:50:35 · 1008 阅读 · 0 评论