数据结构与算法
文章平均质量分 56
棠微风
这个作者很懒,什么都没留下…
展开
-
算法——冒泡排序
(1)冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,像水底下的气泡一样逐渐向上冒。(2)优化:因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较。原创 2024-05-17 22:17:39 · 132 阅读 · 0 评论 -
算法的空间复杂度
(2)空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度。有的算法需要占用的临时工作单元数与解决问题的规模n有关,它随着n的增大而增大,当n较大时,将占用较多的存储单元,例如快速排序和归并排序算法、基数排序就属于这种情况。(3)在做算法分析时,主要讨论的是时间复杂度。一些缓存产品(redis, memcache)和算法(基数排序)本质就是用空间换时间。(1)一个算法的空间复杂度(Space Complexity)定义为该算法所耗费的存储空间,它也是问题规模n的函数。原创 2024-05-17 22:15:45 · 169 阅读 · 0 评论 -
算法的时间复杂度
一般情况下,算法中的基本操作语句的重复执行次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n) / f(n) 的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数,记作,称O(f(n))为算法的渐进时间复杂度,简称时间复杂度。T(n)不同,但时间复杂度可能相同。如:T(n)=n²+7n+6与T(n)=3n²+2n+2, T(n)不同,但时间复杂度相同,都为O(n²)。原创 2024-05-13 22:42:26 · 769 阅读 · 0 评论 -
递归——八皇后问题
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。在 8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、 同一列或同一斜线上,问有多少种摆法。原创 2024-05-13 22:39:10 · 377 阅读 · 0 评论 -
算法——递归(演示 迷宫问题)
递归就是方法自己调用自己,每次调用时传入不同的变量。原创 2024-05-05 21:38:15 · 257 阅读 · 0 评论 -
数据结构——逆波兰计算器(后缀表达式)
(1)中缀表达式就是平时所使用的表达式,但不方便计算机使用。后缀表达式又称逆波兰表达式,运算符位于操作数之后,适合计算机使用。②遇到+运算符,弹出4和3(4为栈顶元素,3为次顶元素),计算出3+4的值,得7,再将7入栈;④接下来是×运算符,因此弹出5和7,计算出7×5=35,将35入栈;⑥最后是-运算符,计算出35-6的值,即29,由此得出最终结果。①从左至右扫描,将 3 和 4 压入堆栈;(2)后缀表达式举例。原创 2024-05-01 00:25:13 · 167 阅读 · 0 评论 -
数据结构——栈实现综合计算器(中缀表达式)
输入一个字符串类型的表达式,例如:7*2*2-5+1-5+3-3,计算出结果。原创 2024-05-01 00:22:29 · 441 阅读 · 2 评论 -
数据结构——栈
(1)栈的英文为(stack)(2)栈是一个先入后出(FILO-First In Last Out)的有序列表。(3)栈是限制线性表中元素的插入和删除,只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,是变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。(4)根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶;而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。(5)出栈(pop)示意图(6)入栈(push)示意图。原创 2024-04-26 23:12:07 · 393 阅读 · 0 评论 -
单向环形链表 解决 约瑟夫(Josephu)问题
约瑟夫(Josephu)问题设编号为1,2,… n的n个人围坐一圈,约定编号为k(1原创 2024-04-26 23:08:34 · 421 阅读 · 0 评论 -
数据结构——双向链表
使用带有head头的双向链表实现“角色排行榜”。原创 2024-04-24 23:48:26 · 370 阅读 · 0 评论 -
数据结构——单链表
(1)链表是以节点的方式来存储,是链式存储。(2)每个节点包含data域:存放数据,next域:指向下一个节点。(3)最后一个节点的next为null,表示链表结束。(4)链表是有序的列表,但是它在内存中。原创 2024-04-23 16:50:23 · 420 阅读 · 0 评论 -
数据结构——队列
(1)队列是一个有序列表,可以用数组或链表来实现。(2)遵循先入先出的原则。即:先存入队列的数据,要先取出;后存入的要后取出。(3)示意图:(使用数组模拟队列)1.front表示队首,rear表示队尾2.当数据加入时,rear不断增加,front没有变化。3.当数据取出时,front不断移动,rear没有变化。原创 2024-04-21 12:36:30 · 301 阅读 · 0 评论 -
稀疏数组讲解
(1)当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。2.把具有不同值的元素的行列及值记录在一个小规模的数组中,从而。1.先读取稀疏数组的第一行,根据第一行的数据,创建二维数组。1.遍历 原始的二维数组,得到有效数据的个数 sum。2.再读取稀疏数组后几行的数据,并赋给 二维数组。1.记录数组一共有几行几列,有多少个不同的值。3.将二维数组的有效数据数据存入到 稀疏数组。(1)使用稀疏数组,来保留的二维数组。(2)把稀疏数组恢复成原来的二维数组。2.1.2 应用实例。原创 2024-04-21 12:34:11 · 242 阅读 · 0 评论 -
数据结构与算法概述
数据结构包括:线性结构和非线性结构。原创 2024-04-21 12:30:41 · 89 阅读 · 0 评论