数据结构与算法分析
文章平均质量分 54
多积累基本功,方能行千里
铭丫铭丫铭(-ι_- )
这个作者很懒,什么都没留下…
展开
-
非比较线性时间排序算法——桶排序
桶排序的基本思想是假设数据在【min,max】之间均匀分布,其中min\max分别指数据中的最小值和最大值。那么将区间[min,max]等分成n份,这n个区间便称为n个桶。将数据加入对应的桶中,然后每个桶内单独排序。由于桶之间有大小关系,因此可以从小到大将桶中元素放入数组中。...原创 2020-04-17 16:16:05 · 123 阅读 · 0 评论 -
堆排序——完全二叉树中的浮沉往事
目录基本概念满二叉树(Full Binary Tree)完全二叉树(Complete Binary Tree)什么是堆最大堆和最小堆堆排序算法的实现算法复杂度基本概念满二叉树(Full Binary Tree)一个二叉树,如果每一层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) - 1,则它就是满二叉树。一棵满二叉树的每一个结点要...原创 2020-04-15 20:57:57 · 210 阅读 · 0 评论 -
排序算法——继“计数排序”后,我想到了尽善尽美的“基数排序”
基数排序概述概述基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort),是一种非比较线性时间排序算法。顾名思义,它是透过键值的部分讯息,将要排序的元素分配至某些“桶”内,藉以达到排序的作用。在这我要给大家扩展一下,其实常用的三种非比较线性时间算法:计数排序,基数排序,桶排序都利用了桶的概念,都通过元素自身的值,计算哈...原创 2020-04-09 17:52:03 · 98 阅读 · 1 评论 -
排序算法——巧妙思路下诞生的计数排序(图解)
计数排序算法过程(图解)程序演示(C++)思考一些细节算法复杂度算法过程(图解)计数排序是非比较线性时间排序算法,与比较排序算法不同,计数排序不需要比较和交换元素,而是利用辅助空间和元素自身的值来决定元素在已排序序列中的位置。接下来我们通过图示了解计数排序的过程:首先,我们假设原序列为A,里面包含了六个整数值:六个整数值中最大值为 3,最小值为 -1。所以计算 k = (3 - (-1...原创 2020-04-08 22:09:34 · 283 阅读 · 0 评论 -
排序算法——“史莱姆式”的归并算法
归并算法概述概述鸽了一天没更新了,今天简单地来给大家介绍一下归并算法。原创 2020-04-07 20:16:28 · 511 阅读 · 0 评论 -
排序算法——希尔排序
希尔排序直接插入排序希尔排序概念程序实现:直接插入排序希尔排序(Shell’s Sort)是插入排序的一种,又称为“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。在介绍希尔排序之前,我们首先介绍直接插入排序算法:直接插入排序基本思想是每一步将一个待排序的元素,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。代码...原创 2020-04-06 14:16:58 · 320 阅读 · 0 评论 -
排序算法——快速排序
@[TOC]快速排序算法排序流程快速排序算法通过多次比较和交换来实现排序,其排序流程如下:(1) 首先设定一个基准点,通过该基准点的值将数组分成左右两部分。(2)将大于或等于基准点值的元素集中到数组右边,小于基准点值的元素集中到数组的左边。此时,左边部分中各元素都小于或等于基准点值,而右边部分中各元素都大于或等于基准点值。(3)然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又...原创 2020-04-04 22:59:32 · 196 阅读 · 0 评论 -
排序之冒泡排序的优化方法
排序之冒泡排序的优化方法 一般冒泡排序(Bubble Sort)的写法优化一优化二优化三一般冒泡排序(Bubble Sort)的写法思路:每次迭代从第一个元素开始,依次选择相邻的元素比较大小,若两者顺序错误,则交换两者顺序。每一对元素都进行比较直至最后一对元素。下一次迭代也在原序列上进行重复的操作,除了最后一个元素不需要加入比较。重复上述步骤,直至没有元素对可以比较。void Bu...原创 2020-03-31 12:35:35 · 201 阅读 · 1 评论