![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
yuwenS.
这个作者很懒,什么都没留下…
展开
-
排序算法之归并排序(Java)
通过Java实现归并排序归并排序介绍归并排序是建立在归并操作上的一种有效、稳定的排序算法,该算法是采用分治法的一个非常典型的应用。归并算法的主要步骤将待排序的序列分成两个子序列将子序列合并并排序重复一二步骤归并排序图解实现具体代码实现合并子序列的方法 /** * * @param arr 排序的原始数组 * @param left 左边有序序列的初始索引 * @param mid 中间索引 * @param right原创 2021-06-26 17:02:46 · 106 阅读 · 0 评论 -
排序算法之快速排序(Java)
通过Java实现快速排序快速排序介绍和实现快速排序由C. A. R. Hoare在1960年提出。通过确定某一个元素排序将要排序的数据分割成两部分,一部分全部比这个元素要小,一部分全部比这个确定的元素要大,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序实现图解具体代码实现public static void quickSort(int[] arr,int left,int right){ int l = left原创 2021-06-26 16:17:01 · 118 阅读 · 0 评论 -
排序算法之希尔排序(Java)
通或Java实现希尔排序希尔排序介绍和实现希尔排序是希尔(Donald Shell)于 1959 年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的元素越来越多,当增量减至 1 时,整个待序列恰被分成一组,算法便终止,这时排序便已经完成。希尔排序过程图解...原创 2021-06-25 08:56:54 · 121 阅读 · 0 评论 -
排序算法之冒泡、选择、插入排序(Java)
文章目录通过Java实现冒泡、选择、插入排序算法冒泡排序冒泡排序介绍和实现具体代码的实现选择排序选择排序介绍和实现选择排序图解具体代码实现插入排序插入排序介绍和实现插入排序图解具体代码实现通过Java实现冒泡、选择、插入排序算法排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程、排序算法有、冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、基数排序、堆排序、桶排序和计数排序。这里就简单实现其中的冒泡、选择和插入排序。冒泡排序冒泡排序介绍和实现原创 2021-06-24 19:59:14 · 135 阅读 · 0 评论 -
递归解决八皇后问题(Java)
通过递归解决八皇后问题(Java)八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848 年提出:在 8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法?解决思路第一个皇后先放第一行第一列第二个皇后放在第二行第一列、然后判断是否 可以, 如果不可以,继续放在第二列、第三列、依次把所有列都放完,找到一个合适位置继续第三个皇后,还是第一列、第二列……直到第 8 个皇后也能放在原创 2021-06-22 20:17:59 · 547 阅读 · 0 评论 -
数组模拟循环队列(Java)
通过数组模拟循环队列基于Java实现队列是一种特殊特殊的线性表,和栈一样,队列是一种操作受到限制的线性表,队列的特殊性在于它只允许在表的前端(front)进行删除操作成为出队,而只能在表的后端(rear)进行插入操作,称为入队。进行插入操作的成为队尾,进行删除操作的称为队头。队列的介绍队列是一个有序列表,可以用数组或是链表来实现遵循先入先出的原则。即:先存入队列的数据,要先取出,后存入的要后取出实现循环队列的具体思路定义两个变量front和rear,front指向对头第一个元素,fro原创 2021-06-21 20:21:47 · 190 阅读 · 0 评论 -
Java实现稀疏数组
Java实现稀疏数组稀疏数组通常是指二维数组当中,非零元素的个数远远小于二维数组元素的总数,并且非零元素的分布没有规律原创 2021-06-21 19:33:48 · 119 阅读 · 0 评论 -
栈的基本操作和使用示例(java)
栈栈(stack)又名堆栈,它一种拥有先进出特点的线性表数据结构。有栈顶和栈底,能插入数据的称为栈顶,另一端不能插入数据的为栈底。向栈中插入新数据称为进栈、入栈或压栈,插入的这个新数据把之前的栈顶元素替代成为新栈顶的元素;从栈里删除一个元素称为出栈或退栈,这个是把栈顶元素删除,将栈顶元素下方的第一个元素成为新栈顶元素。代码实现栈一般会有三个操作push 入栈:向栈中添加数据pop 出栈:从栈中删除数据peek 返回栈顶数据具体实现public class ArrayStack {原创 2021-06-10 14:47:40 · 1121 阅读 · 0 评论 -
Java实现单双链表的基本操作
链表链表是一种物理存储上不连续,但是逻辑上是连续有序的存储结构。链表由一系列结点组成(链表每一个元素成为节点)组成,节点可以动态生成。单链表 的节点由两部分组成,一个是存储数据的数据域,一个是存储下一个节点的地址的指针域。双链表 的节点由三部分组成,比单链表多了一个存储上一个节点地址的指针域。图解链表单链表双链表代码实现单链表节点类的实现//节点类public class GoodsNode { public int id; public String name;原创 2021-06-10 15:54:41 · 188 阅读 · 0 评论