Caché 算法与数据结构
yaoxin521123
创造价值,分享学习,一起成长,相伴前行。
展开
-
Caché 算法与数据结构
Caché 算法与数据结构第一章 Caché 算法与数据结构 基础和概念第二章 Caché 算法与数据结构 数组原理第三章 Caché 算法与数据结构 链表原理第四章 Caché 算法与数据结构 栈原理第五章 Caché 算法与数据结构 队列原理第六章 Caché 算法与数据结构 循环队列第七章 Caché 算法与数据结构 双端队列第八章 Caché 算法与数据结构 散列表第九章 Caché 算法与数据结构 二叉树第十章 Caché 算法与数据结构 二叉堆第十一章 Caché 算法与.原创 2020-07-01 11:43:50 · 2100 阅读 · 0 评论 -
第二十五章 Caché 算法与数据结构 插值查找
文章目录 第二十五章 Caché 算法与数据结构 插值查找基本思想算法复杂度使用场景举例非递归插值类调用递归插值类调用 第二十五章 Caché 算法与数据结构 插值查找基本思想基于二分查找算法,将查找点的选择改进为自适应选择,可以提高查找效率。当然,差值查找也属于有序查找。算法复杂度O(log2(log2n))使用场景对于表长较大,而关键字分布又比较均匀的查找表来说,插值查找算法的平均性能比折半查找要好的多。反之,数组中如果分布非常不均匀,那么插值查找未必是很合适的选择。举例在介绍插值查找原创 2020-06-30 08:59:46 · 549 阅读 · 0 评论 -
第二十四章 Caché 算法与数据结构 斐波那契查找
文章目录 第二十四章 Caché 算法与数据结构 斐波那契查找基本思路步骤复杂度完整代码示例斐波那契类调用 第二十四章 Caché 算法与数据结构 斐波那契查找基本思路黄金分割点:是指把一条线段分成两部分,使其中一部分与全长之比等于另一部分与这部分之比,其比值保留三位小数约为0.618。由于按此比例设计的造型十分美丽,因此成为黄金分割,也称为中外比。斐波那契数列:{1,1,2,3,5,8,13,21,34,55…}即相邻两个数的和等于这两个数后面的数,通过计算我们可以发现,斐波那契数列中的两个相邻原创 2020-06-29 08:31:37 · 522 阅读 · 0 评论 -
第二十三章 Caché 算法与数据结构 二分查找
文章目录 第二十三章 Caché 算法与数据结构 二分查找使用场景时间复杂度算法描述完整实力非递归递归调用 第二十三章 Caché 算法与数据结构 二分查找使用场景二分查找法适用于 升序排列的数组,如果你所要操作的数组不是升序排序的,那么请用排序算法,排序一下。使用二分查找法相比顺序查找 节约了时间的开销,但是增加了空间使用。因为需要动态记录起始索引和结束索引和中间索引。时间复杂度顺序查找 平均和最坏情况时间复杂度 :O(n)二分查找法 时间复杂度为:O(log2n)算法描述二分原创 2020-06-28 09:08:48 · 557 阅读 · 0 评论 -
第二十二章 Caché 算法与数据结构 桶排序
文章目录 第二十二章 Caché 算法与数据结构 桶排序桶排序步骤时间复杂度完整示例桶类调用 第二十二章 Caché 算法与数据结构 桶排序桶排序桶排序是稳定的。桶排序是常见排序算法中最快的一种,大多数情况下比快排和归并排序还要快。桶排序非常快但是也非常消耗空间,典型的以空间换时间,基本上是最耗内存的一种排序算法。步骤桶排序中:无序数组有个要求,就是成员隶属于固定(有限的)的区间,如范围为0-9例如待排数字[6 2 4 1 5 9]准备10个空桶,最大数个空桶[6 2 4 1 5原创 2020-06-27 09:16:42 · 478 阅读 · 0 评论 -
第二十一章 Caché 算法与数据结构 基数排序
文章目录 第二十一章 Caché 算法与数据结构 基数排序算法描述步骤LSD 基数排序动图演示时间复杂度完整示例基数类调用 第二十一章 Caché 算法与数据结构 基数排序算法描述基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。基数排序 vs 计数排序 vs 桶排序这三种排序算法都利用了桶的概念,但对桶的使用方法上有明显差异:基数排序:根据键值的每位原创 2020-06-26 08:37:05 · 611 阅读 · 0 评论 -
第二十章 Caché 算法与数据结构 归并排序
文章目录 第二十章 Caché 算法与数据结构 归并排序思想时间复杂度归并排序的应用算法描述完整示例并归类调用输出 第二十章 Caché 算法与数据结构 归并排序思想归并排序通过不断的将原数组进行拆分(通常拆分成左右两项),一直到剩下一项,然后分别将拆分的子数组进行合并,此时,两个子数组已经是排好序的,所以合并排序只需要进行一趟排序即可完成,所以此类排序需要两个步骤:拆分原数组利用递归,不断得寻找左子数组和右子数组,一直到数组的长度为一合并子数组。因此此算法是经典的分治算法。每次原创 2020-06-25 09:26:59 · 526 阅读 · 0 评论 -
第十九章 Caché 算法与数据结构 插入排序
文章目录 第十九章 Caché 算法与数据结构 插入排序基本思想时间复杂度步骤完整代码插入类调用 第十九章 Caché 算法与数据结构 插入排序基本思想把n个待排序的元素看成一个有序表和一个无需表,开始的时候有序表只有1个元素,无序表中有n-1个元素每次从无序表中取出第一个元素,将它插入到有序表中,使之成为新的有序表,重复n-1次完成整个排序过程。时间复杂度O(n^2)步骤从第一个元素开始,该元素可以认为已经被排序;取出下一个元素,在已经排序的元素序列中从后向前扫描;如果该元素(已原创 2020-06-24 08:17:12 · 404 阅读 · 0 评论 -
第十八章 Caché 算法与数据结构 选择排序
文章目录 第十八章 Caché 算法与数据结构 选择排序基本思想时间复杂度算法描述完整示例插入类调用 第十八章 Caché 算法与数据结构 选择排序基本思想简单选择排序是最简单直观的一种算法,每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止,简单选择排序是不稳定排序。在算法实现时,每一轮确定最小元素的时候会通过不断地比较交换来使得首位置为当前最小,交换是个比较耗时的操作。其实我们很容易发现,在还未完全确定当前最小元素之前,这些交换都是无意义的。因此可以通过设原创 2020-06-23 21:57:45 · 492 阅读 · 0 评论 -
第十七章 Caché 算法与数据结构 希尔排序
文章目录第十七章 Caché 算法与数据结构 希尔排序希尔排序时间复杂度完整示例排序类调用第十七章 Caché 算法与数据结构 希尔排序希尔排序希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。时间复杂原创 2020-06-22 05:10:45 · 448 阅读 · 0 评论 -
第十六章 Caché 算法与数据结构 计数排序
文章目录 第十六章 Caché 算法与数据结构 计数排序定义使用场景简单示例计数类调用优化问题解决优化版本计数类调用时间复杂度空间复杂度 第十六章 Caché 算法与数据结构 计数排序定义假设20个随机整数的值如下所示。9,3,5,4,9,1,2,7,8,1,3,6,5,3,4,0,10,9 ,7,9。在0到10之间取值。数组定义大小为取值的最大范围下面就开始遍历这个无序的随机数列,每一个整数按照其值对号入座,同时, 对应数组下标的元素进行加1操作。例如第1个整数是9,那么数组下标为9的元素加原创 2020-06-21 09:01:58 · 474 阅读 · 0 评论 -
第十五章 Caché 算法与数据结构 堆排序
文章目录 第十五章 Caché 算法与数据结构 堆排序二叉堆特性调整步骤完整代码堆排序类调用降序升序复杂度堆排序与快速排序区别 第十五章 Caché 算法与数据结构 堆排序二叉堆特性最大堆的堆顶是整个堆中的最大元素。最小堆的堆顶是整个堆中的最小元素。调整以最大堆为例,如果删除一个最大堆的堆顶(并不是完全删除,而是跟末尾的节点交换位置),经过自我调整,第2大的元素就会被交换上来,成为最大堆的新堆顶。如上图所示,在删除值为10的堆顶节点后,经过调整,值为9的新节点就会顶 替上来原创 2020-06-20 08:50:59 · 482 阅读 · 0 评论 -
第十四章 Caché 算法与数据结构 快速排序
文章目录 第十四章 Caché 算法与数据结构 快速排序定义流程选择基准元素元素的交换(递归实现)双边循环完整实例快速排序类调用单边循环完整实例快速排序类调用元素的交换(非递归实现)快速排序类调用 第十四章 Caché 算法与数据结构 快速排序定义同冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。不同的是,冒泡排序在每一轮中只把1个元素冒泡到数列的一端,而快速排序则在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列一边,比它小的元素移动到数列的另一边,从而原创 2020-06-19 08:44:59 · 575 阅读 · 0 评论 -
第十三章 Caché 算法与数据结构 鸡尾酒排序
文章目录 第十三章 Caché 算法与数据结构 鸡尾酒排序定义示例使用场景完整代码排序类 第十三章 Caché 算法与数据结构 鸡尾酒排序定义冒泡排序的每一个元素都可以像小气泡一样,根据自身大小,一点一点地向着数组的一侧移动。算法的每一轮都是从左到右来比较元素,进行单向的位置交换的。鸡尾酒排序的元素比较和交换过程是双向的。示例由8个数字组成一个无序数列{2,3,4,5,6,7,8,1},希望对其进行从小到大的排序。如果按照冒泡排序的思想,排序过程如下。鸡尾酒排序的思想第1轮(和冒泡原创 2020-06-18 08:40:29 · 420 阅读 · 0 评论 -
第十二章 Caché 算法与数据结构 冒泡排序
文章目录第十二章 Caché 算法与数据结构 冒泡排序思想实例第一轮第二轮第三轮第四轮第五轮第六轮第七轮代码实现第一版第二版优化第三版优化第十二章 Caché 算法与数据结构 冒泡排序它是一种基础的交换排序。思想把相邻的元素两两比较,当一个元素大于右侧相邻元素时,交换他们的位置:当一个元素小于或等于右侧相邻元素时,位置不变。实例数列如下排序:{5,8,6,3,9,2,1,7}第一轮第一次 5 和 8 比较 5 比 8 小 不变。{5,8,6,3,9,2,1,7}第二次 8 和原创 2020-06-17 09:05:39 · 674 阅读 · 0 评论 -
第十一章 Caché 算法与数据结构 优先队列
文章目录 第十一章 Caché 算法与数据结构 优先队列插入出队时间复杂度完整实例优先队列类调用 第十一章 Caché 算法与数据结构 优先队列插入插入新节点5新节点5“上浮”到合适位置。出队让原堆顶节点10出队把最后一个节点1替换到堆顶位置。节点1“下沉”,节点9成为新堆顶。时间复杂度二叉堆节点“上浮”和“下沉”的时间复杂度都是O(logn),所以优先队列入队和出队的时间复杂度也是O(logn)!完整实例优先队列类Class PHA.YX.Arith原创 2020-06-16 11:08:28 · 433 阅读 · 0 评论 -
第十章 Caché 算法与数据结构 二叉堆
文章目录 第十章 Caché 算法与数据结构 二叉堆最大堆最小堆插入节点构建二叉堆完整代码二叉堆类调用 第十章 Caché 算法与数据结构 二叉堆二叉堆本质上是一种完全二叉树:最大堆:任何一个父节点的值,都大于或等于它左,右孩子节点的值。最小堆:任何一个父节点的值,都小雨或等于它左,右孩子节点的值。二叉堆的根节点叫做堆顶。二叉堆的特性绝对了堆顶是整个堆中最大元素或最小元素。最大堆最小堆插入节点当二叉堆插入节点时,插入位置是完全二叉树的最后一个位置。例如插入一个新节点,值是 0。原创 2020-06-15 10:02:22 · 500 阅读 · 0 评论 -
第九章 Caché 算法与数据结构 二叉树
文章目录第九章 Caché 算法与数据结构 二叉树二叉树满二叉树完全二叉树前序遍历中序遍历后序遍历广度遍历完整实例构建二叉树节点类二叉树类调用第九章 Caché 算法与数据结构 二叉树二叉树二叉树是树的一种特殊形式。二叉,顾名思义,这种树的每个节点最多有2个孩子节点。注意,这里是最多有2个,也可能只有1个,或者没有孩 子节点。满二叉树一个二叉树的所有非叶子节点都存在左右孩子,并且所有叶子节点都在同一层级上,那么这个树就是满二叉树。完全二叉树对一个有n个节点的二叉树,按层级顺序编号,则所原创 2020-06-14 09:54:49 · 453 阅读 · 0 评论 -
第八章 Caché 算法与数据结构 散列表
文章目录 第八章 Caché 算法与数据结构散列表散列表完整示例链表节点类哈希表类调用 第八章 Caché 算法与数据结构散列表散列表散列表也叫做哈希表,这种数据结构提供了键(key)值(value)的映射关系,只要给出一个key就可以高效查找它所匹配的value,时间复杂度接近于O(1)。keyvaluekey1vaule1key2vaule2key3vaule3key4vaule4完整示例在直接寻址的情况下,具有关键字k的元素被存储在槽k中。原创 2020-06-13 08:58:59 · 470 阅读 · 0 评论 -
第七章 Caché 算法与数据结构 双端队列
文章目录 第七章 Caché 算法与数据结构 双端队列数组循环队列具体实现定义节点类队列实现类调用 第七章 Caché 算法与数据结构 双端队列数组循环队列双端队列是指允许两端都可以进行入队和出队操作的队列,其元素的逻辑结构仍是线性结构。将队列的两端分别称为前端和后端,两端都可以入队和出队。出入对头对尾出入1345679出入出入队具体实现定义节点类Class PHA.YX.Arithmetic.DoubleQueue.Node Extends %RegisteredObject{/* 数原创 2020-06-12 09:35:16 · 440 阅读 · 0 评论 -
第六章 Caché 算法与数据结构 循环队列
文章目录 第六章 Caché 算法与数据结构 循环队列数组循环队列数组类循环链表类调用 第六章 Caché 算法与数据结构 循环队列数组循环队列队列是一种只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表(头删尾插)数组类基于第二章数组原理类Class PHA.YX.Arithmetic.Array Extends %RegisteredObject{Property array [ InitialExpression = {[]} ];Property size [ Ini原创 2020-06-11 08:22:41 · 475 阅读 · 0 评论 -
第五章 Caché 算法与数据结构 队列原理
文章目录 第五章 Caché 算法与数据结构 队列原理队列数据实现链表实现入队出队链表队列具体实现节点类链表队列类调用 第五章 Caché 算法与数据结构 队列原理队列队列是一种线性数据结构,不同于栈的先入后出,队列中的元素只能先入先出。队列的出口端叫做对头,队列的入口端叫做队尾。数据实现对头队尾134569链表实现对头队尾134569null入队入队就是把新元素放入队列中,只允许在队尾的位置放入元素,新元素的下一个位置将会成为队尾。例如7入队。对头队尾1345679出队出队操作就是原创 2020-06-10 09:04:23 · 491 阅读 · 0 评论 -
第四章 Caché 算法与数据结构 栈原理
文章目录 第四章 Caché 算法与数据结构 栈原理栈数据实现链表实现入栈出栈链表实现完整实例定义链表定义栈类调用复杂度应用小思考 第四章 Caché 算法与数据结构 栈原理栈是一种线性数据结构,元素只能先入后出,最早进入的元素存放的位置叫做栈底,最后进入的元素存放的位置叫做栈顶。数据实现graph LR 3 --栈底--- 5 5 --- 1 1 --- 4 4 --- 9 9 --栈顶--- 6链表实现graph LR 3 --栈原创 2020-06-09 08:11:18 · 508 阅读 · 0 评论 -
第三章 Caché 算法与数据结构 链表原理
文章目录 第三章 Caché 链表原理链表单向链表双向链表完整实例节点类链表类调用添加节点删除头节点删除中间节点删除尾节点 第三章 Caché 链表原理链表是一种在物理上非连续,非顺序的数据结构,由若干节点组成。单向链表单向链表的每一个节点又包含两部分,一部分是存放数据的变量data,另一部分是指向下一个节点的指针next。双向链表它的每一个节点除了拥有data和next指针,还拥有指向前置节点的prev指针完整实例节点类Class PHA.YX.Arithmetic.Li原创 2020-06-08 08:45:57 · 591 阅读 · 0 评论 -
第二章 Caché 算法与数据结构 数组原理
文章目录 第二章 Caché 算法与数据结构 数组原理数组插入尾部插入中间插入超范围插入完整示例数组类调用思考 第二章 Caché 算法与数据结构 数组原理数组是有限相同类型的变量所组成的有序集合,数组中的每个元素被成为元。数组是最为简单,最为常用的数据结构。数组在内存汇总顺序存储插入数组的实际元素数量可能小于数组的长度:{4,3,6,7,9,5,,null,,null}{0,1,2,3,4,5,6,7}尾部插入尾部插入一个10,直接把插入的元素放在数组尾部的空闲位置即可!{原创 2020-06-07 06:19:29 · 971 阅读 · 0 评论 -
第一章 Caché 算法与数据结构 基础和概念
文章目录第一章 Caché 算法和数据结构 基础和概念基本概念逻辑结构概念物理结构概念数据类型概念什么是数据结构什么是时间复杂度什么是空间复杂度算法算法的特性算法的设计要求算法效率的度量方法算法时间复杂度常数阶线性阶对数阶平方阶常见的时间复杂度算法的空间复杂度空间复杂度的计算第一章 Caché 算法和数据结构 基础和概念基本概念数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。程序设计 =原创 2020-06-06 08:41:18 · 1504 阅读 · 0 评论