
数据结构与算法
文章平均质量分 62
爱吃炸鸡的贝狄
厌恶一切的暴怒之人
展开
-
过桥问题, 动态规划详解, Java实现
题目有A、B、C、D四个人,要在夜里过一座桥。他们通过这座桥分别需要耗时1、2、5、10分钟,只有一支手电,并且同时最多只能两个人一起过桥。请问,最短需要多长时间才能过桥?面试官求您了, 我真的不太会动态规划(小声呜呜呜你出我也没办法, 我会加把劲做的Link Start!package baguwen;public class Bridge { public static void main(String[] args) { //!!这个people数组需要从小到大排序!原创 2021-03-29 10:27:30 · 579 阅读 · 3 评论 -
堆排序从理论思想到Java代码实现
什么是堆?堆是一种特殊的完全二叉树,即自上而下, 自左到右, 依次将每一个节点, 叠满整棵树, 这种树叫完全二叉树当完全二叉树的每一个节点大于等于或者小于等于自己的左右子树时, 称该完全二叉树为堆当堆的顶端是最大值时, 它叫大顶堆当堆的顶端是最小值时, 它叫小顶堆堆可以用来解决什么样的问题?TOP K问题(面试老常客了, 希望你不是和我一样面向面试学习。。。堆排序的理论思想虽然堆排序引入了堆的概念, 但是并不是真正的去构建一个二叉树, 它只是实现了一个"假想的逻辑堆 a[i] >=原创 2021-03-27 11:02:43 · 154 阅读 · 0 评论 -
从冒泡排序到快速排序, 以及他们的优化方式
在学习快速排序之前我们来看一下什么冒泡排序import java.util.Arrays;public class 冒泡排序 { public static void main(String[] args) { int[] test = new int[]{9, 1, 5, 8, 7, 4, 6, 2}; //用于交换的临时值 int temp = 0; for (int i = 0; i < test.length; i原创 2021-03-19 14:55:24 · 339 阅读 · 1 评论 -
说人话的五分钟快速简单使用排序-希尔排序 Java语言
希尔排序大概是众多常见排序算法中唯一一个不是耿直名字的了(这就是我还不会希尔排序的理由?一句话概括希尔排序!插入排序Plus版本!它其实就是先给数组分隔成n组来进行插入排序最后分成arr.length组时就不需要进行插入排序了~会快一点!代码实现import java.util.Arrays;public class 希尔排序 { public static void main(String[] args) { int[] a = {2,10,8,22,34,5原创 2020-12-01 16:57:31 · 169 阅读 · 0 评论 -
说人话的五分钟快速简单使用排序-快速排序 Java语言
选择一句你喜欢的话来概括快速排序快速排序是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列快速排序的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字少,则可分别对这两部分记录进行排序,以达到整个序列有序的目的快速排序的快速使用核心思路的快速使用待排序数组为{50,1原创 2020-11-26 15:30:21 · 217 阅读 · 1 评论 -
说人话的五分钟快速简单使用排序-直接插入排序 Java语言
选择一句你喜欢的话概括什么是插入排序插入排序的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表.插入排序的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。插入排序的快速使用假设待排序的关键字序列是{9, 1, 5, 8 ,3 }以下是每一次交换的结果原创 2020-11-25 19:22:06 · 141 阅读 · 0 评论 -
说人话的五分钟快速简单使用排序--选择排序 Java语言
选择一句你喜欢的话概括什么是选项排序选择排序法就是通过n-1次关键字间的比较.从n-i+1个记录中选出关键字最小的记录,并和第i个记录进行交换选择排序是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。选择排序快速使用假设待排序的关键字序列是{9, 1, 5, 8 ,7 ,4 ,6 ,2}以下是每一次交换后的结果1 9 5 8 7 4 6 21 2 5 8 7 4 6 91 2 4 8 7 5 6 91 2 4 5 7 8 6 91 2 4 5 6 8 7 9原创 2020-10-11 09:14:42 · 141 阅读 · 0 评论 -
说人话的五分钟快速简单使用排序--冒泡排序 Java语言
选择一句你喜欢的话概括什么是冒泡排序两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的气泡一样逐渐向上冒。冒泡排序的快速使用核心思路快速演示假设待排序的关键字序列是{9, 1, 5, 8 ,7 ,4 ,6 ,2}以下每一行代表交换过后一次的状况9 1 5 8 7 4 2 69 1 5 8 7 2 4 69 1 5 8 2 7 4 69 1 5 2 8 7 4 69 1 2 5 8 7 4原创 2020-09-25 15:44:30 · 125 阅读 · 0 评论