一、直接插入排序 直接插入排序 和折半插入排序 ,图示是一样的,但是在进行插入的时候就看出效率 了 。 折半插入排序:采用折半查找插入; 直接插入排序:一次比较插入。(代码中很明显) 数据量大折半插入的效率高点 //直接插入排序//算法思想:每趟将一个待排的关键字按照其值的大小插入到已经排好的部分有 ...
分类:
编程语言 时间:
2019-11-21 17:02:37
阅读次数:
89
排序算法的稳定性 排序的稳定性,指原有数据相同值的原始次序不变。 可以: 冒泡排序遇到相等的数不交换即可做到稳定。 插入排序,遇到相等的数即停止比较,插入数组。 归并排序 merge 过程中,遇到相等的值先填入左区域的值就可以做到稳定。 不可以: 选择排序不能做到稳定性,选择数值的时候交换数字是会打 ...
分类:
编程语言 时间:
2019-11-20 12:16:42
阅读次数:
73
Shuffle过程是MapReduce整个工作流程的核心环节。 Shuffle过程是指对Map输出结果进行分区、排序、合并、归并处理后输入Reduce的过程。分为Map端和Reduce端两个部分。 Map端Shuffle过程的理解: 数据经过Map的逻辑处理后,Map将他们输出,由Shuffle进行 ...
分类:
其他好文 时间:
2019-11-18 15:42:09
阅读次数:
65
Java数据结构和算法(八)——递归 目录 1、递归的定义 2、求一个数的阶乘:n! 3、递归的二分查找 4、分治算法 5、汉诺塔问题 5、归并排序 6、消除递归 递归和栈 7、递归的有趣应用 ①、求一个数的乘方 ②、背包问题 ③、组合:选择一支队伍 8、总结 记得小时候经常讲的一个故事:从前有座山 ...
分类:
编程语言 时间:
2019-11-17 10:22:54
阅读次数:
125
一、什么是归并排序? 归并排序是基于分而治之的思想建立起来的。 所谓的分而治之,也就是将一个数据规模为N的数据集,分解为两个规模大小差不多的数据集(n/2),然而分别处理这两个更小的问题,就相当于解决了总的问题。 二、归并排序的思路。 1-首先将数据分为左右相等的两部分,不断细分,到最后只有单个元素 ...
分类:
编程语言 时间:
2019-11-17 01:03:35
阅读次数:
94
冒泡排序 冒泡排序比较简单,但是容易出现冗余的循环,即使是一个已经排序的数组传入仍然需要遍历 O(n ^ 2)。 选择排序 选择排序时间复杂度也是 O(n ^ 2)。 插入排序 插入排序,有可能是 O(n) 也有可能是 O(n^2),和数据是否已经有序有关。 归并排序 归并排序使用了递归的方式,利用 ...
分类:
编程语言 时间:
2019-11-16 23:49:54
阅读次数:
153
各种排序算法所需辅助空间 1、 所有的简单排序方法(包括:直接插入、起泡和简单选择)和堆排序的空间复杂度为O(1); 2、 快速排序为O(logn ),为栈所需的辅助空间; 3、 归并排序所需辅助空间最多,其空间复杂度为O(n ); 4、链式基数排序需附设队列首尾指针,则空间复杂度为O(rd )。 ...
分类:
编程语言 时间:
2019-11-16 21:32:40
阅读次数:
74
第四章实践报告 1.实践题目 4-3 最优合并问题 (100 分) 题目来源:王晓东《算法设计与分析》 给定k 个排好序的序列, 用 2 路合并算法将这k 个序列合并成一个序列。 假设所采用的 2 路合并算法合并 2 个长度分别为m和n的序列需要m+n-1 次比较。试设 计一个算法确定合并这个序列的 ...
分类:
其他好文 时间:
2019-11-16 17:48:30
阅读次数:
70
20182311 2019 2020 1 《数据结构与面向对象程序设计》实验七报告 课程:《程序设计与数据结构》 班级: 1823 姓名: 冷冲 学号:20182311 实验教师:王志强 实验日期:2019年10月30日 必修/选修: 必修 1.实验内容 定义一个Searching和Sorting类 ...
分类:
其他好文 时间:
2019-11-16 10:53:26
阅读次数:
48
介绍 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。 若将两个有序表合并成一个有序表,称为二路归并。归并排序 ...
分类:
编程语言 时间:
2019-11-15 18:16:16
阅读次数:
102