数据结构与算法
记录一些数据结构与算法的重点、要点、理解与想法
bitDesigner
合抱之木,生于毫末
展开
-
算法—二分查找
关键:计算中点mid=l+(r-l)/2与mid=(l+r)/2,人算的话都可以,但是l+r对于机器计算就可能有问题。我们知道,数据类型在计算机里存储都是有长度限定的。如果l和r都很大,快接近某种类型的最大值了。那计算机计算l+r,就会得到错误结果,因为计算结果很容易就超过这种类型所能存储的最大容量,因而会把计算结果高位溢出,这样显然的不到正确结果。而l+(r-l)/2这种方式就不会存在上述问题,因为r和l如果在编译时都不报错,那r-l显然也不会存在问题,把r-l的结果除以2再与l相加,也不会存在原创 2022-02-11 19:30:23 · 182 阅读 · 0 评论 -
有序数组合并
给定两个数组,若它们同为升序,则合并它们得到一个为升序的新数组,如{1,3,5,7,9}和{2,4,6,8},合并后得到{1,2,3,4,5,6,7,8,9};若它们同为降序,则合并他们得到一个为降序的新数组,如{8,6,4,2}和{9,7,5,3,1},合并后得到{9,8,7,6,5,4,3,2,1}。原创 2022-02-10 23:49:56 · 909 阅读 · 0 评论 -
图递归遍历
深度优先遍历: 广度优先搜索:从图G的某个顶点v0出发,访问v0,然后选择一个与v0相邻且没被访问过的顶点vi访问,再从vi出发选择一个与vi相邻且未被访问的顶点vj进行访问,依次继续。如果当前被访问过的顶点的所 有邻接顶点都已被访问,则退回到已被访问的顶点序列中最后一个拥有未被访问的相邻顶点的顶点w, 从w出发按同样的方法向前遍历,直到图中所有顶点都被访问原创 2022-02-05 22:21:24 · 254 阅读 · 0 评论 -
数组:翻转指定的次数
问题描述:给定一个数组,对其进行滚动操作,并给出滚动后的轨迹。示例:1.给定的数组(相当于轮子)int[] ints={1,2,3,4}2.滚动操作ints=rotate(ints, 4)3.旋转后的数组(相当于轮子滚动后的轨迹){1,2,3,4,4,3,2,1,1,2,3,4,4,3,2,1,1,2,3,4}数组滚动操作源码如下:package compute;import java.util.Arrays;/** *数组翻转 *问题描述:以现有数组的元素个数为翻转的基原创 2022-02-04 01:03:14 · 121 阅读 · 0 评论 -
算法—数组平移
数组平移描述:给定一个数组,对其扩容后得到一个新数组,将和原数组中对应的元素平移指定偏移量的位数,若平移后会越界,则至多平移至新数组的末尾原创 2022-01-29 18:25:36 · 2067 阅读 · 0 评论 -
字符串排序思路,或者叫做两个字符串比较大小
字符串对象本质上是字符数组。字符串的排序归结为其对应的字符数组的排序(不是数组内部排序,而是数组之间的比较和排序)。而字符都有对应的码值,单就英文字母a~z来说,各个字母对应码值相对是升序的,即a的码值小于b的码值,依次往后增大。因为每个字符都有一一对应且唯一的码值,这就为比较和乃至排序提供了基础。...原创 2022-01-29 11:01:27 · 2990 阅读 · 0 评论 -
数据结构之栈
栈的特性:后进先出(或先进后出)栈的操作:入栈、出栈、扩容原创 2022-01-27 17:45:31 · 670 阅读 · 0 评论 -
算法—数组反转
数组首尾元素交换位置,如果数组元素个数为奇数,则中间位置元素移动;如果数组元素个数为偶数,则不存在中间位置的元素原创 2022-01-26 22:39:20 · 723 阅读 · 0 评论 -
算法—超长数字型字符串相加
粗糙地演示两个整数型的字符串相加原创 2022-01-24 20:00:58 · 382 阅读 · 0 评论 -
算法—for循环应用
使用for循环在控制台打印三角形原创 2022-01-22 20:09:23 · 470 阅读 · 0 评论 -
算法—二叉树递归遍历
java递归地实现二叉树的遍历(前序、中序和后序)原创 2022-01-26 16:22:48 · 1395 阅读 · 0 评论