![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
Gypsophyla
这个作者很懒,什么都没留下…
展开
-
(数据结构与算法)插入排序和希尔排序
1. 插入排序插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素, 把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。代码演示package com.zh.data_structures.sort;import java.util.Arrays;public class InsertSort {原创 2020-08-05 17:21:22 · 1483 阅读 · 0 评论 -
(数据结构与算法)冒泡排序和选择排序
文章目录1.冒泡排序2.选择排序小结1.冒泡排序冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始) ,依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。优化:因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较。(1) 一共进行数组的大小-1次大的循环.(2)每一趟排序的原创 2020-08-04 09:27:42 · 215 阅读 · 0 评论 -
(数据结构与算法)递归及一些经典递归问题
文章目录1. 递归的概念2. 递归的调用机制3. 递归需要遵守的重要规则4. 递归 - 迷宫问题1. 递归的概念递归就是方法自己调用自己,每次调用时传入不同的变量。递归有助于编程者解决复杂的问题,同时可以让代码变得更简洁2. 递归的调用机制当程序执行到一个方法时,就会开辟一个独立的空间(栈)每个空间的数据(局部变量),是独立的打印问题public class recursionTest { public static void main(String[] args) {原创 2020-08-02 21:15:30 · 342 阅读 · 0 评论 -
(数据结构与算法)使用栈来实现综合计算器
1.栈实现综合计算器(中缀表达式)1.1流程图1.2 代码实现public class Calculator { public static void main(String[] args) { String expression = "700*2*2-5+1-5+3-4"; //创建数栈和运算符栈 ArrayStackCal numStack = new ArrayStackCal(10); ArrayStackCal ope原创 2020-07-01 16:33:15 · 553 阅读 · 0 评论 -
(数据结构与算法)数组和单链表实现栈的基本操作
数组实现栈//用数组实现栈public class ArrayStackDemo { public static void main(String[] args) { ArrayStack stack = new ArrayStack(5); stack.push(1); stack.push(4); stack.push(6); stack.push(3); stack.traverse();原创 2020-06-29 12:04:56 · 309 阅读 · 0 评论 -
(数据结构与算法)单向环形链表解决约瑟夫问题
约瑟夫(Josephu)问题Josephu问题为: 设编号为1, 2,… n的n个人围坐一圈,约定编号为k (1<=k<=n) 的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。解决思路用一个不带头结点的循环链表解决:先构成一个带有n个节点的单向环形链表,然后由k节点起从1开始计数,计到m时,对应节点从链表中删除,然后再从被删除节点的下一个节点开始数,直到最后一个节点从链表中删除。代码实现单向原创 2020-06-28 10:44:32 · 256 阅读 · 0 评论 -
(数据结构与算法)单链表与双链表增删改查的实现。
文章目录链表介绍1. 单链表应用实例1.1 实现思路1.2 代码实现链表介绍链表是有序的列表,但是它在内存中是如下存储的:链表是以节点的方式来存储,是链式存储每个节点包含data域,next域:指向下一个节点链表的各个节点不一定是连续存储链表分带头节点的链表和没有头结点的链表单链表(带头节点)逻辑结构示意图如下:1. 单链表应用实例使用带头的单向链表实现 -带编号的英雄人物的增删改查操作。1.1 实现思路1.add方法添加英雄时,直接添加到链表尾部2.addByOrder方原创 2020-06-25 11:59:41 · 558 阅读 · 0 评论 -
(数据结构与算法)数组模拟队列和环形队列
文章目录数组模拟队列思路代码实现问题分析并优化数组模拟环形队列思路代码实现数组模拟队列队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出示意图: (使用数组模拟队列示意图)思路maxSize为队列最大容量front和rear记录队列前后端的下标front随着队列输出而改变,rear随着队列输入而改变当front = rear时,队列为空当rear = maxSize -1 时,队列满代码实现public cla原创 2020-06-24 12:04:54 · 194 阅读 · 0 评论 -
(数据结构与算法)稀疏数组案例
案例:将如下五子棋盘用稀疏数组保存,并有存盘退出和续上盘功能(文件输入输出)实现思路代码实现import java.io.*;public class Demo01SparseArray { public static void main(String[] args) throws Exception { //创建原始数组 int[][] arr1 =new int[11][11]; arr1[1][2] = 1; ar原创 2020-06-23 11:57:30 · 171 阅读 · 0 评论