📝 DAA

95篇技术文档
  DAA合并排序

📅  最后修改于: 2020-12-10 03:55:32        🧑  作者: Mango

合并排序它紧密遵循分而治之范式。从概念上讲,它的工作方式如下:划分:将未排序的列表划分为两个大约一半大小的子列表。征服:递归地对两个子列表中的每个列表进行排序,直到列表大小为1,在这种情况下,将返回列表项。合并:将两个已排序的“子”列表重新合并为一个已排序的列表。主要目的是按降序对未排序列表进行排序。下图说明了分割(分割)过程。在这种方法中,我们将给定的列表分为两半。然后递归分析合并排序和划分。我...

  河内DAA塔-JavaPoint

📅  最后修改于: 2020-12-10 03:56:26        🧑  作者: Mango

河内塔1.这是一个经典问题,您尝试仅使用三个销将所有磁盘从一个销移动到另一个销。2.最初,所有磁盘都堆叠在一起,较大的磁盘位于较小的磁盘下面。3.尝试重新放置所有磁盘时,可以将磁盘移动到三个销钉中的任何一个,但是不能将较大的磁盘放在较小的磁盘上,并且一次只能转移一个磁盘。通过分而治之算法可以轻松解决此问题在上述第7步中,将钉销A的所有磁盘都转移到C并满足以下条件:一次只能移动一个磁盘。较小的磁盘可...

  DAA二进制堆排序

📅  最后修改于: 2020-12-10 03:57:27        🧑  作者: Mango

堆排序二进制堆:Binary Heap是一个数组对象,可以视为Complete Binary Tree。二叉树的每个节点对应于数组中的一个元素。长度[A],数组中的元素数Heap-Size [A],数组A中存储的堆中的元素数。树A [1]的根,给出节点的索引“ i”,可以计算其父节点,左子节点和右子节点的索引。上图的数组表示如下:索引20为1为了找到左孩子的索引,我们计算1 * 2 = 2这使我们...

  DAA快速排序

📅  最后修改于: 2020-12-10 03:58:29        🧑  作者: Mango

快速分类它是分而治之类型的算法。划分:重新排列元素并将数组拆分为两个子数组,并在两次搜索之间的一个元素中,左子数组中的每个元素小于或等于平均元素,右子数组中的每个元素大于中间元素。征服:递归地对两个子数组进行排序。合并:合并已排序的数组。算法:分区算法:分区算法在一个位置重新排列子数组。图:显示执行跟踪分区算法快速排序示例:设44为Pivot元素,并从右向左进行扫描将44与右侧元素进行比较,如果右...

  DAA稳定排序

📅  最后修改于: 2020-12-10 03:59:21        🧑  作者: Mango

稳定排序如果两个具有相同关键字的对象在输入输出中的顺序与在输入未排序数组中出现的顺序相同,则该排序算法被认为是稳定的。一些排序算法本质上是稳定的,例如插入排序,合并排序和冒泡排序等。排序算法不稳定,例如快速排序,堆排序等。稳定排序的另一个定义:稳定排序是一种保留输入集原始顺序的排序,其中比较算法不能区分两个或多个项目。稳定排序将保证在输出中保留具有相同等级的原始数据顺序。就地排序算法:就地排序算法...

  DAA下界理论

📅  最后修改于: 2020-12-10 06:16:19        🧑  作者: Mango

下界理论下界理论概念基于执行算法所需的最短时间的计算,被称为下界理论或基础界理论。下界理论使用多种方法/技术来找出下界。概念/目的:主要目的是计算执行算法所需的最小比较数。技术:下界理论使用的技术是:比较树。甲骨文和对手的争论状态空间法1.比较树:在比较排序中,我们仅使用元素之间的比较来获取有关输入序列(a1; a2 … an)的顺序信息。给定来自(a1,a2….. an)的i,aj我们进行比较之...

  DAA线性时间排序

📅  最后修改于: 2020-12-10 06:17:14        🧑  作者: Mango

线性时间排序我们拥有可以在O(n log n)时间内对“ n”个数字进行排序的排序算法。合并排序和堆排序在最坏的情况下达到此上限,而快速排序在平均情况下达到此上限。合并排序,快速排序和堆排序算法具有一个有趣的属性:它们确定的排序顺序仅基于输入元素之间的比较。我们将这种排序算法称为“比较排序”。有一些算法运行速度更快并且需要线性时间,例如计数排序,基数排序和存储桶排序,但是它们需要对输入序列进行排序...

  DAA计数排序

📅  最后修改于: 2020-12-10 06:18:25        🧑  作者: Mango

计数排序这是一种线性时间排序算法,通过不进行比较而可以更快地工作。假定要排序的数字在1到k的范围内,其中k很小。基本思想是确定最终排序数组中每个数字的“等级”。计数排序使用三个数组:[1,n]保留初始输入。B [1,n]保存排序的输出。C [1,k]是整数的数组。 C [x]是x在A中的等级,其中x∈[1,k]首先,C [x]是A [j]的元素数量,它们等于x将C初始化为零对于从1到n的每个j,将...

  DAA桶排序

📅  最后修改于: 2020-12-10 06:19:19        🧑  作者: Mango

桶分类桶分类平均在线性时间运行。与计数排序一样,存储桶排序也很快速,因为它考虑了有关输入的某些内容。 Bucket Sort认为输入是通过随机过程生成的,该过程在元素μ= [0,1]上均匀分布元素。将μ划分为n个非重叠间隔,称为存储桶。将每个输入数字放入其存储桶中使用简单算法(例如插入排序)对每个存储桶进行排序,然后连接已排序的列表。桶排序认为输入是n个元素数组A,并且数组中的每个元素A [i]都...

  DAA基数排序

📅  最后修改于: 2020-12-10 06:20:14        🧑  作者: Mango

基数排序基数排序是一种排序算法,当存在常量“ d”(所有键均为d位数字)时很有用。要执行“基数排序”,对于p = 1朝向“ d”,使用任何线性时间稳定排序从右开始对数字进行排序。基数排序代码很简单。以下过程假定n元素数组A中的每个元素都有d位,其中位1是最低位,位d是最高位。这是对A [1.n]进行排序的算法,其中每个数字都是d位数字长。示例:第一列是输入。其余的列显示了在连续递增的数字位置上连续...

  DAA哈希

📅  最后修改于: 2020-12-10 06:21:10        🧑  作者: Mango

散列散列是一个字符串的字符的成表示原始字符串通常较短的固定长度值或键的转化。哈希用于索引和检索数据库中的项目,因为使用最短的哈希键查找项目要比使用原始值查找项目更快。它也用在许多加密算法中。通过使用键(唯一值)生成哈希码。散列是一种技术,其中通过对键字段值应用相同的操作,将给定的键字段值转换为记录的存储位置地址。散列的优势在于,即使对于较大的一方,基本操作的执行时间也可以保持恒定。为什么我们需要散...

  DAA哈希表

📅  最后修改于: 2020-12-10 06:22:06        🧑  作者: Mango

哈希表它是一系列项目的存储方式,以便以后查找时容易找到它们。哈希表中的每个位置称为插槽,可以容纳一个项目,并由一个从0开始的整数值命名。项与该项在哈希表中所属的插槽之间的映射称为哈希函数。哈希函数接受键并返回其哈希编码或哈希值。假设我们有一组整数54、26、93、17、77、31。我们需要作为“余数方法”的第一个哈希函数只是简单地获取该项并将其除以表大小,然后将余数作为其哈希值返回,即ITEMHA...

  DAA哈希方法

📅  最后修改于: 2020-12-10 06:23:01        🧑  作者: Mango

散列方法有两种用于实现哈希的主要方法:链式散列使用开放式地址进行哈希处理1.链式散列在“通过链式哈希处理”中,S中的元素存储在大小为m的哈希表T [0 … m-1]中,其中m略大于S的大小n。哈希表被称为具有m个插槽。与散列方案相关联的是从U映射到{0 … m-1}的散列函数h。每个密钥k∈S存储在位置T [h(k)]中,我们说k被散列了插入插槽h(k)。如果将S中的多个键散列到同一插槽中,则发生...

  DAA开放寻址技术

📅  最后修改于: 2020-12-10 06:23:59        🧑  作者: Mango

开放式寻址技术通常使用三种技术来计算开放寻址所需的探针序列:线性探测。二次探测。双重哈希。1.线性探测:它是计算机编程中用于解决哈希表冲突的方案。假设将具有密钥k的新记录R添加到存储表T,但是具有哈希地址H(k)的存储位置。 H已被填充。解决冲突的自然钥匙是将R穿越到T(h)之后的第一个可用位置。我们假设位置为m的表T是圆形的,因此T [i]在T [m]之后。上面的冲突解决方案称为“线性探测”。线...

  DAA哈希函数

📅  最后修改于: 2020-12-10 06:24:55        🧑  作者: Mango

散列函数哈希函数用于索引原始值或键,然后在以后每次与该值或键关联的数据被检索时使用。因此,散列始终是单向操作。无需通过分析散列值对散列函数进行“反向工程”。良好哈希函数的特征:哈希值完全由要哈希的数据确定。散列函数使用所有输入数据。哈希函数“均匀地”将数据分布在整个可能的哈希值集中。哈希函数为相似的字符串生成复杂的哈希值。一些流行的哈希函数是:1.除法:选择一个比k中的n个键的数目小的m(通常选择...