- 博客(18)
- 收藏
- 关注
原创 查找的算法
搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且此过程可以递归进行,直到找到要查找的元素,或者整个数组范围被搜索完。如果找到要查找的元素,则返回该元素的位置;线性查找是一种简单的查找算法,它从数据结构的一端开始,逐个检查每个元素,直到找到所需的元素或搜索到数据结构的另一端。2.1 findVal>arr[mid],说明你要查找的数在mid的右边,因此需要递归的向右查找。
2025-09-12 15:20:32
383
原创 排序的算法
基本思想:首先将待排序记录序列中的所有记录作为当前待排序区域,从中任选取一个记录(通常可选第一个记录),以它的关键字作为枢轴(或支点)(pivot),凡其关键字小于枢轴的记录均移动至该记录之前,反之,凡关键字大于枢轴的记录均移动至该记录之后。通过一趟快速排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。例如,对一个很大且其中的元素已经有序(或接近有序)的数组。
2025-09-12 14:55:43
421
原创 递归的算法
•5)当一个方法执行完毕,或者遇到return,就会返回,遵守谁调用,就将结果返回给谁,同时当方法执行完毕或者返回时,该方法也就执行完毕。递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。•4)递归必须向退出递归的条件逼近,否则就是无限递归,出现 StackOverflowError,死龟了:)(1)大问题可以转化为若干个小问题来求解,而这些小问题的求解 方法与大问题相似,只是在数量规模上不同。•1. 各种数学问题如: 汉诺塔,阶乘问题,迷宫问题,
2025-09-12 14:37:20
181
原创 队列及练习
端点:队列有两个主要的端点——队头(front)和队尾(rear)。队头是队列中最先入队的元素所在的位置,而队尾则是最后入队的元素所在的位置。先进先出:队列中元素的添加(入队enqueue)和移除(出队dequeue)遵循先进先出的原则。
2025-09-06 16:20:19
152
原创 认识栈和队列
●栈是一种特殊的线性表,它同样由一系列数据元素组成,但是栈的操作受到限制,只允许在一端(称为栈顶)进行插入(压栈,push)和删除(弹栈,pop)操作。●线性表是计算机科学中最基本的数据结构之一,它是由一系列数据元素组成的有限序列,其中每个元素都有一个前驱和后继(除了第一个元素没有前驱,最后一个元素没有后继)。6.判断元素t是否次nu11,如果不是,则证明有对应的左括号,如果不是,则证明没有对应的左号。7.循环结束后,判断栈中还有没有剩余的左括号,如果有,则不匹配,如果没有,则匹配.
2025-09-06 16:11:47
334
原创 链表及链表练习
双向链表也叫双向表,是链表的一种,它由多个结点组成,每个结点都由一个数据域和两个指针域组成,数据域用来存储数据,其中一个指针域用来指向其后继结点,另一个指针域用来指向前驱结点。相比较顺序表,链表插入和删除的时间复杂度虽然一样,但仍然有很大的优势,因为链表的物理地址是不连续的,它不需要预先指定存储空间大小,或者在存储过程中涉及到扩容等操作,同时它并没有涉及的元素的交换。a·循环链表可以是单向的也可以是双向的,其特点是最后一个节点的“下一个”指针不是指向null,而是回指到链表的第一个节点,形成一个闭环。
2025-09-06 15:52:17
388
原创 线性表(顺序表练习)
如果把线性表用数学语言来定义,则可以表示为(a1,...ai-1,ai,ai+1,...an),ai-1领先于ai, ai领先于ai+1,称ai-1是ai的前驱元素,ai+1是ai的后继元素。2.链式存储:不要求逻辑上相邻的结点物理上也相邻,结点间的逻辑关系是由附加的指针字段表示的,在java中使用“对象引用”来实现指针。线性表中数据存储的方式可以是顺序存储,也可以是链式存储,按照数据的存储方式不同,可以把线性表分为顺序表和链表。2、添加以下学生姓名到顺序表中:“张三”, “李四”, “王五”,“赵六”。
2025-09-06 15:39:16
304
原创 数据结构与算法概论
•我们考察它的数量级量度,即它与什么简单函数f(n)是同一数量级的,即T(n)=O(f(n))当n→∞时T(n)/n3 = (2n3+3n2+2n+1)/ n3→2 按“O”的定义我们可知T(n)=O(n3)•高效性:算法的效率是对求解同样问题的不同算法所占用的时间或空间的评价。逻辑结构是从具体问题中抽象出来的模型,是抽象意义上的结构,按照对象中数据元素之间的相互。算法中每条指令的执行次数是有限的,执行每条指令的时间也是有限的。•算法的执行时间是求解问题的规模n(如矩阵的阶数,线性表的长度)的函数。
2025-09-05 19:33:45
372
原创 使用结构化命令
当命令返回一个非零退出状态码,if-then-else语句就能够执行else的命令。如果该命令的退出状态码是0(即命令成功运行),则位于then后的命令就会被执行。如果该命令的退出状态码是其他值,then后的命令就不会被执行,bash shell会跳过这个if-then语句,去执行脚本中后面的命令。在其他编程语言中,if语句后的对象是一个等式,该对象的值若为TRUE则执行接下来的命令,若为FALSE则不执行。如果条件不成立,test命令就会退出并返回非零的退出状态码,这使得if-then语句不会再被执行。
2025-07-11 15:58:49
799
原创 构建基本shell脚本
shell脚本的关键在于输入多个命令并处理每个命令的结果,甚至需要将一个命令的结果传给另一个命令。如果要两个命令一起运行,可以把它们放在同一行中,彼此间用分号隔开。要将shell命令放到文本文件中,首先需要用文本编辑器vim来创建一个.sh后缀的shell脚本文件,然后将命令输入到文件中。并且,在创建shell脚本文件时,必须在文件的第一行指定要使用的shell。在bash命令的用法里,bash后面是可以直接跟脚本文件的。一般来说#用作注释行,而#!如果用管道符实现,则只输出最终的结果,并不显示中间结果。
2025-07-10 14:41:11
220
原创 Linux的用户管理和文件权限
想让其他人也能访问文件,要么改变其他用户所在组(others)的访问权限,要么把其他用户拉进该文件所在的组(group)Linux系统上共享文件的方法是创建组,并把其他用户放置在一个组中(usermod -G 命令更改用户所在组)。每个用户的目录都是在根目录下的home(/home),你进入到自己的home目录时(比如cd /home/zhang/)才显示的波浪号~useradd -m username 能在添加新用户时,为新用户的HOME目录里放置默认的系统文(/etc/skel下的文件)。
2025-07-09 18:32:40
889
原创 Linux环境变量
bash shell用环境变量的特性来存储有关shell会话和工作环境的信息(这也是它们被称作环境变量的原因)。环境变量(environment variable)是其值在程序外部设置的变量,通常通过操作系统或微服务内置的功能设置。所有的环境变量名均使用大写字母,这是bash shell的标准惯例。用bash命令生成一个子shell后,echo $HOME 显示环境变量的当前值,这个值和父shell中的一模一样。要显示个别全局环境变量的值,可以直接使用printenv命令,或者用env命令+grep检索。
2025-07-08 16:47:20
717
原创 理解Shell
bin/bash是放在脚本文件的第一行,是指此脚本使用/bin/bash来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径。它在后台生成一个子shell,并在这个子shell中执行命令coproc命令给进程起的默认名字为COPROC通过使用扩展语法,可以修改协程的名字。/bin/bash。在CLI提示符后输入/bin/bash命令或其他等效的bash命令时,会创建一个新的shell程序。你既可以在子shell中进行繁重的处理工作,同时也不会让子shell的I/O受制于终端。
2025-07-07 16:40:53
838
原创 使用vim编辑器、shell命令的补充
这里需要注意的是,如果 file 不存在,将会创建 file,如果 file 存在,原有的文件内容将。如果在使用命令vim时,指定了一个不存在的filename,vim会开辟一段新的缓冲区域来。插入模式/编辑模式:在插入模式下,vim会将你在当前光标位置输入的每个键都插入到缓冲区。如果在使用命令vim时,指定了一个已有文件的名字,vim会读取该文件的所有内容,vim编辑器在普通模式下有一特别功能叫命令行模式,在普通模式下按下冒号键(:)普通模式下,按下斜线键(/),光标会跑到命令行。
2025-07-04 16:25:58
870
原创 在Xshell中实际操作一些命令
可以用lsof(list opened files)命令获得使用它的进程信息,然后在应用中心停止使用该设备或停止该进程。在Linux上用来挂载媒体的命令叫mount,在默认情况下,mount命令会输出当前系统上挂载的设备列表。在默认情况下,kill命令会向命令中列出的全部PID发送一个TEAM信号,告诉进程可能得话就停止运行。gzip命令会压缩你在命令行指定的文件。如果遇到无法直接结束进程的情况,则可以添加-9参数(注意谨慎使用!如果想检测这些,就要用到ps命令,能输出运行在系统上所有程序的信息12。
2025-07-03 16:34:20
364
原创 Linux的常用命令
所以删除空目录时,可以先使用rm -i删除目录中的文件,再使用rmdir删除空目录;也可以在整个非空目录上使用rm -r -f/ -rf命令,使得命令可以向下进入目录,删除其中的文件,然后再删除目录本身(注意,这是强制删除,需要谨慎使用!mv只影响文件名,inode编号和时间戳保持不变,在mv命令中也可以使用-i参数,这样在命令试图覆盖已有的文件时就会得到提示。ls(list)命令最基本的形式回显示当前目录下的文件好目录:ls命令输出的列表按字母排序;ls -R可以列出当前目录下包含的子目录中的文件。
2025-07-02 18:55:57
768
原创 Xshell
SSH(Secure Shell)是一种加密的网络传输协议,用于在不安全的网络中提供安全的远程登录、文件传输和其他网络服务。它通过加密通信数据,防止信息泄露和中间人攻击,替代了传统的明文协议(如Telnet、FTP)。在本地文件系统中找到需要上传的文件,选中后右键点击“传输”或直接拖拽至远程目录区域。打开Xftp后,界面分为本地文件系统和远程服务器目录,可通过拖放或右键菜单操作文件。从服务器下载文件时,在远程目录选中目标文件,右键选择“传输”或拖拽至本地目录区域。可能出现的错误:数据输入错误;
2025-07-01 16:09:30
171
原创 Linux
Linux是一种开源的类Unix操作系统内核,基于POSIX和Unix的多用户、多任务设计理念。Linux内核通常与GNU工具链和软件包结合使用,形成完整的操作系统,称为“GNU/Linux”或简称为“Linux发行版”。虚拟机(Virtual Machine,简称VM)是通过软件模拟的完整计算机系统,具备与物理计算机相同的功能(如运行操作系统和应用程序)。它通过虚拟化技术(如Hypervisor)在物理硬件上创建隔离的虚拟环境,多个虚拟机可共享同一台物理机的资源。1 下载并安装虚拟机软件。
2025-06-30 21:33:21
143
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅