- 博客(34)
- 收藏
- 关注
原创 堆排序介绍
1)堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏、最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。2)堆是具有以下性质的完全二叉树:每个节点的值都大于或等于其左右孩子结点的值,称为大顶堆 ,**注意: **没有要求节点的左孩子的值和右孩子的值的大小关系。3)每个节点的值都小于或等于其左右孩子节点的值,称为小顶堆+我们对堆中的结点按层进行编号,映射到数组中就是下面这个样子5)小顶堆举例说明小顶堆:arr[i] <= arr[2。
2023-05-30 22:25:42
150
原创 CS、BS简介
缺点:所有的计算机和存储任务都是放在服务器端的,服务器的负荷较重;在服务器端计算完成之后把结果传输给客户端,因此客户端会运行非常频繁的数据通信,从而网络负荷较重。(一部分安全要求不高的计算机任务放在客户端执行,不需要把所有的计算和存储都在服务器端执行,从而能够减轻服务器的压力,也能够减轻网络负荷)优点:充分利用客户端机器的资源,减轻服务器的负荷。优点:客户端不需要安装;CS:客户端服务器架构模式。BS:浏览器服务器架构模式。
2023-05-17 20:11:00
171
原创 顺序存储二叉树
需求:给你一个数组{1,2,3,4,5,6,7},要求以二叉树前序遍历的方式进行遍历,前序遍历的结果应为1,2,3,4,5,6,7。基本说明:从数据存储来看。数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组,如右图。1)右图的二叉树的结点,要求以数组的方式来存放arr:[1,2,3,4,5,6]2)要求在遍历数组arr时,仍然可以以前序遍历,中序遍历和后序遍历的方式完成。2)顺序二叉树的左子节点为2。
2023-05-09 17:50:53
183
原创 二叉树分析
优点:在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要插入节点,链接到链表中即可,删除效率也很好)。能提高数据存储,读取的效率,比如利用二叉排序树既可以保证数据的检索速度,同时也可以保证数据的插入,删除,修改的速度。优点:通过下标访问元素,速度快,对于有序数组,还可以使用二分查找提高检索速度。缺点:再进行检索时,效率仍然较低,比如(检索 某个值,需要从头节点开始遍历)缺点:如果检索具体某个值,或者插入值(按一定顺序)会整体移动,效率低。1)数组存储方式的分析。2)链式存储方式的分析。
2023-05-03 20:45:18
129
原创 斐波那契(黄金分割)查找算法
1)由斐波那契数列F(k-1)+F[k-2]的性质,可以得到 (F[k]-1)=(F[k-1]-1)+(F[k-2]-1)+1。该式说明:只要顺序表的长度为F[k]-1,则可以将该表分成长度为F[k-1]-1和F[k-2]-1的两段,即如上图所示。3)但顺序表长度n不一定刚好等于F[k]-1,所以需要将原来的顺序表长度n增加至F[k]-1。这里的k值只要能使得F[k]-1恰好大于或等于n即可,由以下代码得到,顺序表长度增加后,新增的位置(从n+1到F[k]-1位置),都赋为n位置的值即可。
2023-05-02 13:47:58
659
原创 查找算法介绍
顺序(线性)查找二分查找/折半查找插值查找斐波那契查找8.2 线性查找算法有一个数列: {1,8, 10, 89, 1000, 1234} ,判断数列中是否包含此名称【顺序查找】 要求: 如果找到了,就提示找到,并给出下标值//没有顺序的数组 int index = seqSearch(arr , 11);System . out . println("没有找到");} else {System . out . println("找到,下标为=" + index);
2023-04-27 18:05:24
72
原创 常用排序算法对比
相关术语解释:稳定:如果 a 原本在 b 前面,而 a=b,排序之后 a 仍然在 b 的前面;不稳定:如果 a 原本在 b 的前面,而 a=b,排序之后 a 可能会出现在 b 的后面;内排序:所有排序操作都在内存中完成;外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;时间复杂度: 一个算法执行所耗费的时间。空间复杂度:运行完一个程序所需内存的大小。n: 数据规模k: “桶”的个数In-place: 不占用额外内存Out-place: 占用额外内
2023-04-27 17:40:17
82
原创 基数排序算法
1)基数排序(radix sort)属于 “分配式排序”(distribution sort),又称 “桶子法”(bucket sort)或bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些桶中,达到排序的作用2)基数排序法是属于稳定性的排序,基数排序发是效率高的稳定性排序法3)基数排序是桶排序的扩展4)基数排序是1887年赫尔曼.何乐礼发明的。它是这样实现的:将整数按位数切割成不同的数字,然后按每个位数分别比较。
2023-04-27 16:22:06
91
原创 归并排序思想
归并排序是利用归并的思想实现的排序方法,该算法采用经典的分治(分治算法将问题分成一些小的问题然后归并求解,而治的阶段的阶段将分的阶段得到的各种答案修补在一起,即分而治之)
2023-04-26 19:38:46
46
原创 快速排序算法
快速排序是对冒泡排序的一种改进,基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个程序可以递归进行,以此达到整个数据变成有序序列。
2023-04-25 22:32:22
78
原创 HTML.
表示换行.br标签是一个单标签,单标签:开始标签和结束标签是同一个,斜杠放在单词后面。CSS:页面上的内容显示的风格(决定页面上内容的美观程度)HTML:超文本标记语言-决定页面上显示什么内容。JavaScript:页面特效。
2023-04-25 22:04:13
57
原创 冒泡排序.
冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较。(这里说的优化,可以在冒泡排序写好后,在进行)演示冒泡过程的例子(图解)代码演示。
2023-04-16 17:21:23
62
原创 时间频度和时间复杂度。
时间频度:一个算法花费的时间与算法中语句的执行次数成正比,哪个算法中执行次数多,它花费时间就多,一个算法中的语句执行次数称为语句频度或时间频度,记为T(n)举例说明-基本案例比如计算1-100所有数字之和,我们设计两种算法:举例说明-忽略常数项结论:1)2n+20 和 2n 随着n 变大,执行曲线无限接近, 20可以忽略2)3n+10 和 3n 随着n 变大,执行曲线无限接近, 10可以忽略结论: :1)2n^2+3n+10 和 2n^2 随着n 变大, 执行曲线无限接近, 可以忽略 3
2023-04-16 15:09:48
1001
原创 八皇后算法代码实现
简单来说:递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。3)使用图解的方式说明了递归的调用机制。
2023-04-13 16:25:51
61
原创 【无标题】
(2)如果是右括号“)”,则依次弹出s1栈顶的运算符,并压入s2,直到遇到左括号为止,此时将这一括号丢弃。3)否则,将s1栈顶的运算弹出并压入到s2中,再次转到(4-1)与s1中新的栈顶运算符相比较;8.依次弹出s2中的元素并输出,结果的逆序即为中缀表达式对应的后缀表达式。1).如果s1为空,或栈顶运算符为左括号“(”,则直接将此运算符入栈;2)否则,若优先级比栈顶运算符的高,也将运算符压入s1。4.遇到运算符时,比较其s1栈顶运算符的优先级。7.将s1中剩余的运算符依次弹出并压入s2。
2023-04-12 22:49:41
61
原创 【无标题】
1)输入一个逆波兰表达式(后缀表达式),使用栈(Stack),计算其结果2)支持小括号和多位整数,因为我们这里主要讲的是数据结构,因此计算机进行简化,只支持对整数的计算3)思路分析1 . 从左至右扫描,将3和4压入堆栈;2 . 遇到+运算符,因此弹出4和3(4为栈顶元素,3为次顶元素),计算出3+4的 值,得7,再将7入栈;3 . 将5入栈;4 . 接下来是运算符,因此弹出和7,计算出75=35,将35入栈;5 . 将6入栈;
2023-04-09 18:08:57
56
原创 栈的介绍和代码实现
注意不是简单的把算式列出运算,因为我们看这个算式 7 * 2 * 2 - 5, 但是计算机怎么理解这个算式的(对计算机而言,它接收到的就是一个字符串),我们讨论的是这个问题。3.栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。4.根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。
2023-04-08 15:48:56
76
原创 简单实现链表数据的增删删改查
System.out.println(“有效的节点个数=”+getLength(singleLinkedList.getHead()));System.out.printf(“准备插入的英雄的编号%d已经存在了,不能加入\n”,heroNode.no);System.out.printf(“没有找到 编号%d 的节点,不能修改\n”,newHeroNode.no);//将cur的下一个节点指向新的链表的最前端。// 方法,获取到单链表的节点的个数(如果是带头结点的链表,需求不统计头节点)
2023-04-06 11:54:51
71
原创 数据库查询,单表查询
(7)实验报告:根据实验情况及时撰写实验报告,实验报告应该包括实验目的、实验内容、实验方法及步骤、实验数据及分析,以及实验总结等内容。10.查询全体会员的会员帐号,姓名和年龄并按家庭地址升序排列,同一地址中的会员按年龄降序排列;10.查询全体会员的会员帐号,姓名和年龄并按家庭地址升序排列,同一地址中的会员按年龄降序排列;11.查询会员帐号为‘liuzc’的会员所购买的商品号和订购日期,并按订购日期升序排列;11.查询会员帐号为‘liuzc’的会员所购买的商品号和订购日期,并按订购日期升序排列;
2023-04-01 15:43:53
458
原创 switch简单说明
switch结构中的表达式,只能是如下的6种数据类型之一:byte、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)当调用完执行语句后,则仍然向下执行其他case结构中的执行语句,直到break关键字或此switch-case结构末尾结束为止.根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应的case结构中,调用其执行语句。default结构是可选的。default结构是可选的,而且位置是灵活的。break关键字是可选的。
2023-03-29 22:44:55
106
原创 eclise快捷键
12.如何查看源码:ctrl+选中指定的结构 或ctrl+shift+t。7.复制指定的代码:ctrl+alt+down或ctrl+alt+up。27.批量修改指定的变量名、方法名、类名等:alt+shift+r。28.选中的结构大小写的切换:变成大写:ctrl+shift+x。29.选中的结构大小写的切换:变成小写:ctrl+shift+y。35.查看指定的结构使用过的地方:ctrl+alt+g。34.关闭所有的窗口:ctrl+shift+w。23.格式化代码:ctrl+shift+f。
2023-03-29 22:44:47
73
原创 csdn使用指南
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + S
2023-03-29 22:36:14
5080
原创 队列的介绍
1.队列是一个有序列表,可以用数组或是链表来实现。2.遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的后取出3.示意图:(使用数组模拟队列示意图)
2023-03-29 11:03:22
74
1
原创 稀疏数组和队列
当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:1.记录数组一共有几行几列,有多少个不同的值2.把具有不同值的元素记录在一个小规模的数组中,从而缩小程序的规模。
2023-03-28 17:54:56
57
原创 try-catch的基本使用方法
1.如果发生异常,则异常发生后的代码不会执行,直接进入了catch块,因为发生异常后的代码不会运行,所以对于程序运行的正确性有很大的保障。3.如果希望发不发生异常都进入到某段代码段 例如:关闭数据库的连接,则使用finally{}2.如果异常没有发生,则顺序执行try的代码块,不会进入到catch。
2023-03-19 16:58:14
3503
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人