![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
文章平均质量分 82
椿尼
但行好事,莫问前程
展开
-
Java实现二分查找算法
什么是二分查找算法?二分查找也称为折半查找,顾名思义,也就是将查找范围缩小一半的查找算法。那么具体是怎么实现呢?首先我们要明确一点,二分查找针对的是有序序列的查找。可以是从小到大排序也可以是从大到小排序,本文就以从小到大排序的数组为例子。我们先确定几个关键的量:首尾元素的下标,既然要将范围缩小,那么首尾下标肯定要知道啊,这样才能求出中间元素的下标。需要查找的变量,当然这和定义的数组必须是相同类型。数组,自定义一个有序数组或者无序数组然后手动将其排序,在其中进行查找。二分查找的过程是这.原创 2021-08-19 23:23:25 · 310 阅读 · 0 评论 -
排序算法之插入排序
插入排序的基本思想插入排序(Insertion Sorting)的基本思想是:把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它依次与有序表的元素进行比较,将它插入到有序表中适当的位置,是指成为新的有序表,即不断扩张有序表。插入排序的过程图代码演示public class InsertSort { public static void main(String[] args) {原创 2020-10-02 11:06:44 · 133 阅读 · 0 评论 -
Java实现二叉树的三种遍历方式
二叉树遍历的说明前序遍历:先输出父节点,然后遍历左子树,再遍历右子树中序遍历:先遍历左子树,然后输出父节点,再遍历右子树后序遍历:先遍历左子树,然后遍历右子树,再输出父节点二叉树遍历的具体实现步骤首先创建一棵二叉树1.前序遍历:1.1先输出当前节点(初始为根节点)1.2如果左子节点不为空,则递归继续前序遍历1.3如果右子节点不为空,则递归继续前序遍历2.中序遍历:2.1如果当前节点的左子节点不为空,则递归中序遍历2.2输出当前节点2.3如果当前节点的右子节点不为空,则递归中序原创 2020-09-08 15:22:46 · 741 阅读 · 0 评论 -
排序算法之选择排序
基本介绍首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。再次,在剩下的元素中找到最小的元素,将它和数组的第二个元素交换位置。如此往复,直到将整个数组排序。这种方法就叫做选择排序,简单来说就是不断寻找剩余元素的最小值放到前面。过程分析(图解)原始数据为:3, 1, 6, 2, 5代码实现public class SelectSort { public static void main(String[] args)原创 2020-08-01 14:27:16 · 147 阅读 · 0 评论 -
排序算法之冒泡排序
基本介绍冒泡排序(Bubble Sorting)的基本思想是:通过对排序序列从前往后(从下标较小的元素开始)依次比较相邻元素的值,如果发现逆序则交换,使值较大的元素逐渐从前往后移动,就像水底的气泡逐渐往上冒。简单来说就是:重复寻找序列中最大值放在序列最后的操作。实现思路假设有n个元素需要排序,实际只需要进行n-1次寻找最大值并移动到右侧的操作,最后剩余的1个元素位置自然是确定的,可以使用一层循环控制这n-1次的操作。然后就是具体的实现相邻元素的比较和交换的操作了,这也需要一层循环。分析过程: 原数原创 2020-07-30 14:12:52 · 232 阅读 · 0 评论 -
Java单链表模拟栈(尾插)
思路分析:1.首先需要定义一个结点类,用来作为栈存储数据的空间。由结点id(用于标识结点,根据容量从0递增),下个结点,数据三个部分构成。2.初始化栈时,定义一个size变量,来指定栈的容量。定义一个辅助的结点变量flag来指向链表最后一个结点的下一个结点,即初始化栈顶,当然flag也始终指向栈顶。(初始化的flag并不算在栈的空间之中,只是作为一个约定而已)3.由于选择的是尾插法进行入栈操作,每次入栈和出栈时需要遍历整个栈空间即链表去按照id寻找对应的结点来移动栈顶,所以定义一个辅助结点变量top原创 2020-07-24 19:38:40 · 290 阅读 · 0 评论 -
Java实现数组模拟队列及环形队列
数组模拟队列数组模拟队列的思路:1.front定义为头指针,指向队列头部,初始值为-1(为队列前一个位置)2.rear定义为尾指针,指向队列尾部,初始值为-13.定义maxSize为队列的最大容量4.入队列:(1)判断队列是否已满,若rear < maxSize-1,说明队列没满,可以添加数据;rear==maxSize-1,说明队列已满,不能再添加数据。(2)将尾指针rear后移一位。(队列没满才执行第二步)5.出队列:(1)判断队列是否为空,若rear == front,则说明队原创 2020-07-22 23:55:44 · 166 阅读 · 0 评论