摘要: [toc] 一、定义 前言 ​ 顾名思义,快速排序是实践中的一种快速排序算法,在 C++或对Java基本类型的排序中特别有用 。它的平均运行时间是$O(NlogN)$。该算法之所以特别快,主要是由于非常精炼和高度优化的内部循环。它的最坏性能$O(N^2)$。通过将 堆排序 和快速排序的结合,由于堆排 阅读全文
posted @ 2019-04-20 11:28 undifinedException 阅读(200) 评论(0) 推荐(0) 编辑
摘要: [toc] 一、定义 基本思想 ​ 归并排序,其基本思想是 合并2个已经排序的表 ,因为2个表 已经排序 ,所以合并时,将数据放到第三个表中,则该算法可以通过对输入数据一样排序来完成。 基本的算法是取2个输入数组A和B,一个输出数组C。 3个计数器,Actr,Bctr,Cctr,他们初始置于对应数组 阅读全文
posted @ 2019-04-17 23:40 undifinedException 阅读(263) 评论(0) 推荐(0) 编辑
摘要: [toc] 一、定义 1.1 堆 ​ 此处的堆,指数据结构中的堆。而不是内存中的那种内存堆,内存堆是基于数据结构的一种实现。堆的数据结构是一棵完全二叉树,它有如下特点:(具体参考下文链接) 堆是一棵完全二叉树 它总是最小值在根节点(或最大值在根节点) 它上一层比下一层小(大) 必定有快速删除根节点, 阅读全文
posted @ 2019-04-15 22:36 undifinedException 阅读(150) 评论(0) 推荐(0) 编辑
摘要: [toc] 一、定义 1.1 描述 ​ 希尔排序(Shellsort)有时也被称作 缩减增量排序 。它通过比较一定间距的元素来工作,各趟比较所用的距离随着算法的进行而减小。 ​ 首先要说明2个概念: 增量序列:希尔排序使用$h_1,h_2,h_3,…,h_t$序列,叫做 增量序列 ,只要$h_1=1 阅读全文
posted @ 2019-04-14 10:25 undifinedException 阅读(649) 评论(0) 推荐(2) 编辑
摘要: [toc] 一、 定义 ​ 我们知道,左式堆每次操作的时间界是$O(logN)$。二项队列支持 合并、插入、删除最小值 ,每次插入的平均时间为 常数时间 ,而最坏时间是$O(logN)$。 ​ 二项队列: 不是一棵堆序的树,而是堆序的树的集合,成为 森林 。 森林的每棵树都是 二项树(binomia 阅读全文
posted @ 2019-04-01 22:20 undifinedException 阅读(785) 评论(0) 推荐(0) 编辑
摘要: [toc] 一、定义 ​ 左式堆是为了有效的支持合并操作(merge),将2个堆进行合并,不只是合并2个数组,还要维护其中的堆结构。 左式堆 像二叉堆那样具有结构性和有序性。也有堆序性质,也是二叉树,但它不是平衡的,而是趋向于非常不平衡。 1.1 一些特点和定义 ​ 我们为左式堆做如下定义: 零路径 阅读全文
posted @ 2019-03-31 19:26 undifinedException 阅读(2131) 评论(0) 推荐(0) 编辑
摘要: [toc] 一、定义 ​ 一般在优先队列里面说“堆”这个词,指的都是 二叉堆 这种数据结构实现。堆的最大结构特定是能很顺利的找到最小值! ​ 堆是一棵 完全二叉树 ,他总是满足,父节点的元素值小于其子节点的元素。并且每个子树都是堆! 堆是一棵完全二叉树 父节点元素小于(或等于)子节点元素 完全二叉树 阅读全文
posted @ 2019-03-24 23:14 undifinedException 阅读(578) 评论(0) 推荐(0) 编辑
摘要: 一、说明 ​ 在有些情况下,当有许多任务同时出现时,需要程序堆这些任务进行调度,就像windows的进程管理系统,为进程分配时间片,就是这种情况。 ​ 操作系统调度程序必须决定在若干进程中运行哪个进程。一般一个进程只被允许运行一个固定的时间片。一般来说,短的作业要尽可能快的结束,这一点很重要,因此在 阅读全文
posted @ 2019-03-21 21:50 undifinedException 阅读(228) 评论(0) 推荐(0) 编辑
摘要: [toc] 1、定义 前言: ​ 线性探测法是在散列位置的相邻点开始探测,这会引起很多问题,于是各种优化版本例如平方探测、双散列等被提出来改进其中的聚集问题。但是探测相邻位置和第二次散列相比,显然探测相邻位置更有优势,所以线性探测仍然是实用的,甚至是最佳选择。 1.1 描述 ​ 跳房子散列的思路: 阅读全文
posted @ 2019-03-20 23:16 undifinedException 阅读(1596) 评论(0) 推荐(0) 编辑
摘要: [toc] 完美散列 一、介绍 ​ 在部分散列表(分离链接,开放定址)中,当 装填因子$\lambda$合理,散列函数合适的 情况下,期望的插入、删除、和查找的平均时间都是$O(1)$,即在没有冲突的情况下计算散列所需要的时间。 ​ 但是在 最坏情况(冲突)下 ,查找的最坏情形是多少? ​ 我们期望 阅读全文
posted @ 2019-03-19 21:52 undifinedException 阅读(696) 评论(0) 推荐(0) 编辑