![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
星光不问赶路人º
道路越是煎熬,就越坦然面对微笑;风浪刮得越高,就要越心高气傲
展开
-
排序—插入排序
基本介绍插入排序(Insertion Sort)是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增 1 的有序表。代码实现public class InsertSort { public static void insert(int[] arr) { int insertIndex = 0; int insertVal = 0; for (int i = 1; i < arr.length; i++) {原创 2020-09-14 23:24:51 · 274 阅读 · 0 评论 -
排序—选择排序
基本介绍选择排序(Selection Sort)通过 n-i 次关键字间的比较,从 n-i+1 个记录中选出关键字最小的记录。并和第 i 个记录交换。代码实现public class SelectSort { public static void select(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { int min = i; for (int j =原创 2020-09-14 23:23:18 · 266 阅读 · 0 评论 -
排序—冒泡排序
基本介绍冒泡排序(Bubble Sort)的基本思想是:两两比较待排序中相邻元素的值,若发现逆序则交换。优化:排序过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换。就说明序列有序,所以在排序的过程中,设置一个标志(flag)判断元素是否进行过交换。从而减少不必要的比较。代码实现public class BubbleSort { public static void bubble(int[] arr) { // 定义一个变量,记录每轮遍历是否发生了交换原创 2020-09-14 23:21:33 · 320 阅读 · 0 评论 -
数据结构与算法—栈
栈的介绍栈不同于队列,栈是一个先进后出(FILO)的有序列表。栈是一种特殊的线性表。它限制了线性表中元素的插入和删除只能在线性表的同一端进行。允许插入和删除的一端,称为 栈顶,另一端为固定的一端,称为栈底。最先放入栈中的元素在栈底,最后放入的元素在栈顶。删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。应用场景子程序的调用:在跳往子程序前,会先将下个指令的地址存到堆栈中,直到子程序执行完后再将地址取出,以回到原来的程序中。处理递归调用:和子程序的调用类似,只是除了储存下一个原创 2020-08-30 14:12:16 · 193 阅读 · 0 评论 -
数据结构与算法—队列
基本介绍队列是一个有序列表,可以使用数组或链表来实现。队列遵循先进先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出。数组模拟队列因为队列的输入、输出分别是从前后两端来处理的,所以定义两个变量front、rear来分别表示队列的前后端的下标。下面就用代码来实现简单的队列。代码实现数组模拟队列因为这里涉及到了两种不同结构的队列,普通的队列与环形队列。所以这里编写一个抽象类(AbstractQueue),记录队列的公共方法。队列都有添加数据(入队列)、获取数据(出队列)、打印数据(显原创 2020-08-06 22:11:51 · 417 阅读 · 0 评论 -
数据结构与算法—链表(单向链表)
基本介绍链表是有序的列表,只包含一个指针域、由n个结点链接形成的链表,就称为线型链表或者单向链表。如图:通过上图,可以总结出链表的特点:①. 链表是以结点的方式来存储的,是链式存储的。②. 每个结点包含data域,next域:指向下一个结点。③. 链表的各个结点不一定是连续的。④. 链表有带头结点和不带头结点的。那么带头结点和不带头节点的区别是什么?带头结点 插入和删除,不需要修改 head 值。更好地处理链表为空和非空。链表结构示意图代码实现博主作为一个英雄联盟的老粉,从S原创 2020-06-08 09:51:01 · 459 阅读 · 0 评论 -
数据结构与算法—稀疏数组
基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。实际需求相信大家都知道 “五子棋”,或者类似这种棋牌类游戏。它的棋盘就能看成一个二维数组,并且都有一个默认的值,当选手进行下棋操作的时候,会对此二维数组的某行某列的值进行修改。棋盘与二维数组的对应关系如下图:从上图可以看到,棋盘对应的二维数组中,没有进行操作的地方,默认值是0,如果程序把这种数据都记录上,是没有意义的。因此,这里就需要将上面的二维数组转换为 “稀疏数组”。二维数组 转 稀疏数组这张图就原创 2020-06-01 15:06:14 · 206 阅读 · 0 评论