- 博客(11)
- 收藏
- 关注
原创 图的深度遍历和广度遍历
首先定义一个图。然后再进行深度优先遍历,我们以无向图为例。深度优先遍历的基本步骤:1.访问初始节点v,并标记v结点为已访问2.查找节点v的第一个邻接节点w3.若w存在,则执行4.若不存在则返回到第一步,从v的下一个节点出发4.若w未被访问,则把w当作v进行深度优先遍历(继续执行123)5.若w已经被访问,查找v的从w开始的下一个邻接节点,转到3综上所知,深度优先遍历至少还需要查找当前节点的第一个邻接节点,以及查找v从w开始的下一个邻接节点,这两个方法。深度优先遍历的代码。
2023-11-17 15:28:14
70
原创 关于二分查找的一些问题
二分查找要求待查找数组必须有序。如果数组中有要查找的元素num,就返回该元素所在数组中的索引下标。如果没有,就返回-1.当计算mid时,为什么要使用位运算:不仅是因为位运算比直接计算的速度快。也是因为。如果left和right都是比较大的数那么(left+right)/2.可能就造成了溢出。最好使用left + (right-left)/2 的方式防止溢出。
2023-11-15 16:42:42
51
1
原创 七种排序算法的java实现
冒泡排序的思想就是将每个元素进行比较。如果当前元素比下一个元素大,就进行交换。优化的条件是,如果某趟排序中并没有发生交换,所以此时已经有序,直接退出即可。最坏的时间复杂度为O(n^2)
2023-11-14 20:44:14
49
1
原创 java实现栈
ps:java中的LinkedList集合提供了addLast和removeLast方法,所以可以直接使用LinkedList来模拟一个栈。
2023-11-12 13:08:24
44
1
原创 java实现链表
首先要有节点信息。也可以直接使用数字来充当节点信息然后是定义链表信息。这里使用的是带头结点的链表。也就是链表有一个头节点。该头节点是不存放任何数据的,只是为了方便链表的各种操作。(我们假定每个节点的no是不重复的)链表的操作主要是有:add(Node node) 添加一个节点。根据no的值,使加入的节点按no是顺序的remove(Node node) 删除一个节点show() 遍历链表,打印里面的所有数据mod(Node node) 改变节点的值。
2023-11-11 12:12:15
18
1
原创 java实现队列
队列的特性是先进先出。主要的应用是作为缓冲池。首先要有maxSize用来记录队列的最大长度。并且记录front和rear。rear表示队列中的最后一个元素,front表示队列中的第一个元素,在起始时,队列中没有数据。所以初始化front和rear都为-1.判断队列是否为空的条件是front==rear;判断队列是否满的条件是rear==maxSize -1;所以push表示添加数据。首先要判断队列是否已经满了,如果没有就先把front++。然后将该值加入到数组的索引为front的位置。
2023-11-09 10:49:01
25
1
原创 稀疏矩阵使用三元表存储并还原
创建存储稀疏矩阵的三元组,从三元组的第二行开始将非0元素的行索引和列索引以及非0元素的值存入。然后将三元组中第一行的值,赋值为稀疏矩阵的行维度和列维度,以及count。其中count是其中非0元素个数。创建一个11*11的稀疏矩阵,索引为1 2 和 2 3的位置元素不为0,其余位置元素均为0。稀疏矩阵是指二维数组中有大量的值为0,而真正要保存的数据却很少,造成了数组空间的浪费。下面的每一行存放的是每一个非0数据所在的索引坐标,以及每个元素的值。三元组的第一行表示稀疏矩阵的维度,以及非0数据的个数。
2023-11-08 20:29:40
225
1
原创 java中泛型的讲解
基本语法:修饰符 <T,R...>返回类型 方法名(参数列表){}细节: 1.泛型方法可以定义在普通类中,也可以定义在泛型类中2.当泛型方法被调用时,类型会确定3.public void eat(E e){} 修饰符后没有<T,R>,方法不是泛型方法,而是使用了泛型class Car{//普通方法//这个方法不是泛型方法,而是方法使用了泛型//泛型方法,定义了泛型就要用的,不然就没有意义了//传入形参时,编译器就会确定对应的类型car.fly("宝马",100);
2023-10-16 12:01:03
25
1
原创 java中集合的总结和归纳
对上述代码进行debug:进入add方法后,实际上进行的是linkLast方法首先创建一个节点为指向last。但链表中现在没有元素,所以last为null。然后创建一个newNode使前一个节点为链表的最后一个节点,新加入的元素放入该节点的数据域。然后把last指向newNode,即newNode现在是最后一个元素。然后进入if语句。first也指向newNode。表名里面只有一个节点newNode。而加入第二个节点时,进入的就是else里面的代码块,把最后一个节点的next域指向了新节点。
2023-10-15 19:04:24
72
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人