![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法——JAVA语言
爱为斯坦
这个作者很懒,什么都没留下…
展开
-
深度搜索——n皇后
n皇后问题就是在n*n的棋盘上放置n个皇后,使她们之间不在同一行同一列,且不在同一个对角线上问:共有多少种摆法?首先分析问题:直观的来说,我们可以想到直接使用暴力回溯出符合条件的解如何暴力? 从第一行开始以此遍历每一个格子,再继续向上层遍历 比如:对于一个4*4的棋盘,可以先确定第一行的[1,1],再继续遍历第二行,确定第二行的位置,重复此过程 确定了回溯的过程,那么接下来就只需要一个判断函数,即判断当前格子是否符合条件下面开始实现:首先明确的是,对于每一行原创 2022-04-01 20:31:41 · 241 阅读 · 0 评论 -
大顶堆的构造&&堆排序的实现
/** * 堆排序的实现 */public class heapsort { /** * 将数组arr从下标第i个开始构造成一个大顶堆 * @param arr 目标数组 * @param i 从第i个开始构造(i的意思也就是需要保证从i开始后面的数已经是大顶堆了) * @param n 数组的大小 */ public static void construct_heap(int[] arr,int i,int n){ .原创 2021-10-18 10:58:58 · 233 阅读 · 0 评论 -
桶排序&&基数排序的实现(细致到极致)
希望大家在看代码之前先去看看图解,我在这里就只实现了代码也可以在底下留言,我会慢慢讲解的/** * 桶排序和基数排序的实现 */public class bucketsort { /** * 实现一个最简易桶排序 * 主要思想是创建一个超级大的桶,再将每个数按大小放入桶中 * 最后再对桶遍历一下就完成了排序 */ public static void bucket_test1(int[] arr){ int[] bucke原创 2021-10-17 20:04:37 · 89 阅读 · 0 评论 -
快速排序(逐行讲解)
首先需要声明,我这这里并没有图例,所以将以各位小伙伴先去了解此算法的思想再回过来看代码/** * 实现快速排序 */public class quicksort { /** * 快速排序的核心思想其实也是交换 * 设立两个指针左指针和右指针,分别指向头和尾,再从数组中选定一个用来比较的值(基准值) * 让左指针向右移动,右指针向左移动 * 当左指针指向的值大于基准值,就停下 * 当右指针指向的值小于基准值,就停下 * 此时将左原创 2021-10-17 15:14:56 · 84 阅读 · 0 评论 -
二叉搜索数的实现——JAVA
package tree;public class BinarySearchTree<T extends Comparable<T>> { BSTNode<T> myroot; public class BSTNode<T extends Comparable<T>> { T key; BSTNode<T> leftchild; BSTNode<T>原创 2021-09-27 22:25:09 · 91 阅读 · 0 评论 -
用链表实现LinkedList
public class myLinkedList implements Iterable { private int thesize; //存储当前链表的长度 private int modcount = 0; private Node beginMarker; //链表的头节点,其next指向链表的第一个节点 private Node endMarker; //链表的尾节点,其prev指向链表的最后一个节点 public myLinkedLi.原创 2021-09-24 20:25:14 · 80 阅读 · 0 评论 -
用数组的方式实现ArrayList
/** * this is my ArrayList * @param <Object> */public class myarraylist<Object> implements Iterable<Object> { private static final int DEFAULT_CAPACITY = 10; //用来定义默认数组的长度 private int thesize; //用来控制theitems数组的长度(实际也就是.原创 2021-09-24 20:24:24 · 140 阅读 · 0 评论 -
归并排序(逐行注释!) 递归的使用
合并两个有序的数组的归并排序 /** * this is the function of merge sort * * @param arr * @param l * @param m * @param r */ public static void merge(int[] arr, int l, int m, int r) { int[] left = Arrays.copyOfRange(arr, l, m原创 2021-09-24 20:23:08 · 69 阅读 · 0 评论 -
插入排序and希尔排序(逐行讲解!)
希尔排序的实现是在插入排序的基础上进行的将数组按照等差的步长分成若干个小数组,再分别对小数组进行插入排序/** * this is a shell sort * * @param arr */ public static void shell_sort(int[] arr) { int i, j, k; int n = arr.length; for (k = n / 2; k > 0; k /= 2)原创 2021-09-24 20:21:00 · 74 阅读 · 0 评论