数据结构和算法
本专栏主要讲了数据结构和算法的入门知识
孟诸
coding
展开
-
数据结构和算法九-二分查找算法
1 算法简介二分查找思路比较简单,对于一个有序数组,先比价目标元素和中间元素,如果比中间元素小则在左半部分查找;如果比中间元素大则在右半部分查找。2 代码实现public class BinarySearch { public Integer search(Integer[] arrs, int num) { return binarySearch(arrs, 0, arrs.length - 1, num); } private Integer b...原创 2020-08-02 12:43:37 · 146 阅读 · 0 评论 -
数据结构和算法八-排序算法优化
1 切换到插入排序对于小数组,递归类型的排序比插入排序要慢。当递归到某个范围内的小数组时切换到插入排序性能会有良好的提高。经验表明,这个范围在5~15的时候效果良好1.1 快速排序优化public class QuickWithInsertSort extends BaseQuickSort { //阙值 private final int CUTOFF = 10; @Override protected void quickSort(Comparable[...原创 2020-08-02 11:56:52 · 131 阅读 · 0 评论 -
数据结构和算法七-八大排序算法
目录1 排序算法简介1.1 排序算法分类1.2 排序算法时间复杂度1.3 排序算法抽象类2 插入排序2.1 插入排序简介2.2 代码实现3 希尔排序3.1希尔算法简介3.2 代码实现4 选择排序4.1 选择排序简介4.2 代码实现5 堆排序5.1 堆排序简介5.2 代码实现6 冒泡排序6.1 冒泡排序简介7 快速排序7.1 快速排序简介7.2 代码实现8 归并排序8.1 归并排序简介8.2 代码实现9 桶排.原创 2020-08-01 22:22:40 · 527 阅读 · 0 评论 -
数据结构和算法六-八皇后问题
1 问题概述在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。如果经过±90度、±180度旋转,和对角线对称变换的摆法看成一类,共有42类。计算机发明后,有多种计算机语言可以编程解决此问题。2 代码实现/*** @author huwenlong* @date 2019/12/15 23:12*...原创 2020-07-31 21:26:02 · 421 阅读 · 0 评论 -
数据结构和算法五-迷宫回溯问题
1 迷宫问题介绍如图一个8X7的迷宫图,橙色部分是围墙,绿色部分是出口,现在设计从任意一个位置走到出口的算法2 代码实现public class Maze { private int[][] buildMaze() { int row = 8; int col = 7; int[][] nums = new int[row][col]; for (int i = 0; i < row; i++) { ...原创 2020-07-31 21:23:59 · 188 阅读 · 0 评论 -
数据结构和算法四-用栈实现计算器
1 定义一个Calculator抽象类/*** @author huwenlong* @date 2019/12/7 23:07*/public abstract class Calculator { /** * 定义一个运算符map,value表示运算符对应的优先级 */ protected Map<String, Integer> opMap = new HashMap<>(); public Calculato...原创 2020-07-31 09:45:44 · 397 阅读 · 0 评论 -
数据结构和算法三-栈的简单实现
1 栈的简单介绍栈是一种先进后出的数据结构,主要的api如下pop:弹栈,返回并弹出栈顶元素push:压栈,往栈里添加元素peek:返回栈顶元素2 通过链表实现栈public class LinkedStack<T> implements Iterable<T>, Stack<T> { /** * 定义一个指向栈顶的引用 */ private Node<T> top; private Inte...原创 2020-07-30 21:45:02 · 143 阅读 · 0 评论 -
数据结构和算法二-环形链表解决约瑟夫问题
1 问题来历据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。这个过程沿着圆圈一原创 2020-07-29 22:26:14 · 129 阅读 · 0 评论 -
数据结构和算法一-队列的简单实现
1 队列常用的APIadd:将指定的元素插入到此队列中(如果立即可行且不会违反容量限制),在成功时返回 true,如果当前没有可用空间,则抛出 IllegalStateException。offer:将指定元素插入到此队列的尾部(如果立即可行且不会超出此队列的容量),在成功时返回 true,如果此队列已满,则返回 false。可以指定超时时间put:将指定元素插入到此队列的尾部,如有必要,则等待空间变得可用。remove:若队列为空,抛出NoSuchElementException异常。pol原创 2020-07-29 22:00:31 · 292 阅读 · 0 评论