文章分类 -  算法 - 排序

摘要:方案一(常用): 计数排序后,然后找出两两之间的最大差值。计数排序的时间复杂度是O(N) public class CountSort { public static void main(String[] args) { int[] arr = new int[] { 2, 5, 12, 8, 6, 阅读全文
posted @ 2021-07-12 10:35 灰色飘零 阅读(195) 评论(0) 推荐(0)
摘要:在一个数组中,每一个数左边比当前数小的数累加起来,叫做这个数组的小和。求一个数组的小和。 描述 在一个数组中,每一个数左边比当前数小的数累加起来,叫做这个数组的小和。求一个数组的小和。 例子 [1,3,4,2,5] 1左边比1小的数:没有 3左边比3小的数:1 4左边比4小的数:1,3 2左边比2小 阅读全文
posted @ 2021-07-10 11:06 灰色飘零 阅读(177) 评论(0) 推荐(0)
摘要:一、拓扑排序的概念 在现实生活中,我们经常会同一时间接到很多任务去完成,但是这些任务的完成是有先后次序的。例如下图: 为了简化问题,我们使用整数为顶点编号的标准模型来表示这个案例: 这样当某个学生要学习这些课程的时候,需要给出一个学习的方案,我们只需要对图中的顶点进行排序,让它转换为一个线性序列,就 阅读全文
posted @ 2020-09-11 22:46 灰色飘零 阅读(171) 评论(0) 推荐(0)
摘要:一、快速排序和归并排序的比较 相同点: 都采用的分治的思想,都是将数组进行切分排序。 不同点: 1). 归并排序是将数组分成两个子数组,然后对两个子数组进行排序,然后将两个有序的子数组归并,从而将整个数组进行排序。快速排序是当两个子数组有序的时候,整个数组自然就有序了。 2). 归并排序将数组等分两 阅读全文
posted @ 2020-05-27 18:14 灰色飘零 阅读(413) 评论(0) 推荐(0)
摘要:一、排序原理 快速排序是对冒泡排序的一种改进。基本的思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的数据要小,然后按照此方法对这两部分的数据分别进行快速排序,排序过程递归进行,以此达到整个数据都变成有序序列。 具体的排序步骤如下: 首先设定一个分界值,通过该 阅读全文
posted @ 2020-05-27 10:38 灰色飘零 阅读(160) 评论(0) 推荐(0)
摘要:一、排序原理 核心思想是 递归 + 分&治。 归并排序的原理可以概况为以下三步骤: 1.尽可能的将一组数据拆分成两个元素相等的子组,并对每一个子组继续进行拆分,直到拆分后的每个子组的元素个数都为1为止。 2.将相邻的子组合并为一个有序的大组。 3.不断重复步骤2,直到最终只有一个组为止。 二、排序实 阅读全文
posted @ 2020-05-24 14:47 灰色飘零 阅读(191) 评论(0) 推荐(0)
摘要:一、排序原理 希尔排序是插入排序的一种,又称为‘缩小增量排序’,是插入排序算法的一种更高效的改进版本。 1. 选定一个增长量h,按照增长量h对数据进行分组。 2. 对分好的每一组数据完成插入排序。 3. 减少增长量,最小减为1,重复第二步操作。 增长量h的确定规则:增长量h的值为一固定的规则,我们采 阅读全文
posted @ 2020-05-17 09:47 灰色飘零 阅读(678) 评论(0) 推荐(0)
摘要:一、排序原理 1. 把所有的元素分为两组,已排序的和未排序的。 2. 找到未排序数组的第一个元素,向已排序的数组中插入。 3. 倒序遍历已排序的元素,依次和待插入的元素进行比较,直到找到一个元素小于等于待插入元素,那么就把待插入元素放到这个位置,其他元素向后移动一位。 二、代码实现 import j 阅读全文
posted @ 2020-05-15 16:44 灰色飘零 阅读(118) 评论(0) 推荐(0)
摘要:一、排序原理 1. 每一次遍历的过程中,都假定第一个索引处的值都是最小值,和其他索引处的值依次进行比较,如果当前索引处的值大于其他某处索引处的值,则假定某个索引处的值为最小值,最后可以找到最小值所在的索引。 2. 交换第一个索引和最小值所在索引处的值。 二、代码实现 import java.util 阅读全文
posted @ 2020-05-14 17:50 灰色飘零 阅读(137) 评论(0) 推荐(0)
摘要:一、冒泡排序介绍 冒泡排序的算法是最经典的排序算法。 根据上图,我们可以总结排序原理如下: 1. 比较相邻的元素,如果前一个元素比后一个大,就交换这两个元素的位置。 2. 对每一对儿相邻的元素做同样的操作,从第一对元素到结尾的最后一对元素,最终最后位置的元素就是最大值。 二、冒泡排序代码实现 imp 阅读全文
posted @ 2020-05-12 15:14 灰色飘零 阅读(260) 评论(0) 推荐(0)
摘要:在计算核心操作次数的时候,随着输入规模的增大,我们可以设定以下规则: 算法函数中的常熟可以忽略; 算法函数中的最高次幂的常数因子可以忽略; 算法函数中最高次幂越小,算法效率越高。 我们分析一个算法的运行时间,最重要的就是把核心操作的次数和输入规模关联起来。可以结合如下图进行理解: 一、算法的时间复杂 阅读全文
posted @ 2020-05-05 22:36 灰色飘零 阅读(464) 评论(0) 推荐(0)