01 2023 档案
摘要:思路: 选择排序是假定第一个位置上的数是最小的,赋给min和minIndex,然后将其余的数与它比较,如果找到更小的,就把min和minIndex替换掉。那么第一轮就将最小的值以及下标找到了,将最小值与arr[0]进行交换 依次下去,每一轮都将未排序中最小的往前面排,需要arr.length - 1
阅读全文
摘要:思路: 冒泡排序是将下标最小的值与相邻的值进行比较,如果逆序则交换位置,然后后移一位继续与相邻的值进行比较, 所有值都参与过就结束。第一轮将最大的值(代码注释里的第0大)放到最后一个位置(代码注释里的倒数第0个位置) 依次类推,每一轮确定第i大的数放到倒数第i个位置,共有arr.length - 1
阅读全文
摘要:问题: 在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 代码: 1 import org.junit.Test; 2 import java.util.Arrays; 3 4 public class EightQueens
阅读全文
摘要:问题: 迷宫为8x8的二位数组,其中0为道路,1为墙,人如何在起点和终点之前获取一条可达路径。 自定义的概念: 当前位置:人当前所在的位置,通过当前位置不断变动形成一条路径。 策略:人站在当前位置上,向哪个方向来前进到下一个位置,以及如果下一个位置不可到达终点,那么换哪个方向继续前进(例:下->右-
阅读全文
摘要:前缀表达式: 前缀表达式是一种没有括号的算术表达式,与中缀表达式不同的是,其将运算符写在前面,操作数写在后面。为纪念其发明者波兰数学家Jan Lukasiewicz,前缀表达式也称为“波兰式”。例如,- 1 + 2 3。 中缀表达式: 中缀表达式是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形
阅读全文
摘要:入栈: 出栈: 代码: 1 import java.util.Scanner; 2 3 public class ArrayStackTest { 4 public static void main(String[] args) { 5 ArrayStack stack = new ArraySta
阅读全文
摘要:约瑟夫问题: 设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数, 数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。 单向环形链表图示: 代码: 1 import lombok.Dat
阅读全文
摘要:图示: 代码: 1 import lombok.Data; 2 3 public class DoubleLinkedListTest { 4 public static void main(String[] args) { 5 DoubleNode node1 = new DoubleNode(1
阅读全文
摘要:图示: 代码: 1 import lombok.Data; 2 import java.util.Stack; 3 4 public class SingleLinkedListTest { 5 public static void main(String[] args) { 6 SingleNod
阅读全文
摘要:图示: 代码: 1 import java.util.Scanner; 2 3 public class RingQueueTest { 4 public static void main(String[] args) { 5 // 创建一个环形队列 6 RingQueue queue = new
阅读全文
摘要:用途:将普通数组转为稀疏数组来达到节省空间的目的 介绍: 代码: import cn.hutool.core.util.ObjectUtil; import org.junit.Test; public class SparseArrayTest { @Test public void test()
阅读全文