数据结构和算法
java_Maxhui
所有的博客全部用于学习不做商业用途,各种资料均来自于正规途径,如有侵权请联系本人。所有博客不是最终版有任何不完整的地方也可以告知我补充,一起勉励加油!!
展开
-
DS_【排序总结】
Java排序总结种类(1)插入排序:直接插入排序,希尔排序(2)选择排序:简单选择排序,堆排序(3)交换排序:冒泡排序,快速排序(4)归并排序(5)计数排序、基数排序性能稳定排序:冒泡排序,直接插入排序,归并排序,基数排序不稳定:简单选择排序,快速排序,希尔排序,堆排序时间复杂度O(nlogn):快速排序,希尔排序,堆排序O(n^2):直接插入排序,简单选择排序,冒泡排序...原创 2019-05-15 15:44:42 · 215 阅读 · 0 评论 -
02数据结构_单链表【无头非循环】
不带头的单链表非循环【详细内容】https://blog.csdn.net/qq_36390039/article/details/89060878使用内部类Node的方式实现链表// 1、无头单向非循环链表实现 public interface ILinked { //头插法 void addFirst(int data); //尾插法 void addLast(int data...原创 2019-08-11 15:37:16 · 108 阅读 · 0 评论 -
01数据结构_顺序表【大纲】
顺序表本文 主要为部分内容复习展示【详细内容】https://blog.csdn.net/qq_36390039/article/details/89057500这里我们使用数组模拟实现顺序表以及各项功能public interface ISequence { //在pos位置插入val boolean add(int pos,Object data); //查找关键字key 找到返...原创 2019-08-11 11:56:53 · 125 阅读 · 0 评论 -
链表OJ_删除节点、翻转链表
删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-linked-list-elements。class Soluti...原创 2019-08-14 15:02:07 · 172 阅读 · 0 评论 -
03数据结构_单链表【带头循环单链表】
带头循环单链表【详细内容】https://blog.csdn.net/qq_36390039/article/details/89060878//2、带头循环单链表实现 public interface ICLinked { //头插法 void addFirst(int data); //尾插法 void addLast(int data); //任意位置插入,第一个数据节点为0...原创 2019-08-14 14:01:22 · 148 阅读 · 0 评论 -
java七大排序算法_总结大纲
1.直接插入排序插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率在排序的过程中,先拍小序列再拍大序列将整个序列分为两个部分有序的(从小到大)+无序1.将队列第二个数字拿出存入tmp中2.与第一个数字进行比较组成一个两个数的有序队列3.依次从后面拿出数字与之前的序列进行比较4.如果前面的数字大于tmp则依次向后移动5.直达找到前面小于tmp的数字6.此时...原创 2019-08-08 14:06:28 · 204 阅读 · 0 评论 -
DS_【非比较排序】
Java_【非比较排序】(1)计数排序计数排序的思想体现在分配和收集 与比较排序不同非比较排序不用去比较各个数字之间的大小直接利用数组的特性去存储,数组本就可以存放数据取数组的下标从小到大依然有序。所以我们直接利用数组的特性整个分配过程相当于 我们在手里拿到一堆无序的扑克牌然后我们按照地上所标记的数字依次将拿到的牌放置其中最后在从地上依次拿起那么这组牌就会有序排序过程描述1.准备一个与...原创 2019-05-15 15:43:20 · 123 阅读 · 0 评论 -
DS_【归并排序】
Java-四大排序归并排序归并的实现排序的一种解决方式,该算法直接体现分 和 治归并排序过程描述准备一个承载的数组该数组的长度与待排序的数组大小相同 排序的过程从小到大 先分组后排序先把所有的数据两两分组 i=1 s1=0 e1=0 s2=1 e2=1 使用s1--e1 表示分组排的第一个数组s2---e2表示分组排的第二个 经过第一次 数组A 和数组 B中存放 arra[...原创 2019-05-13 21:28:26 · 223 阅读 · 0 评论 -
DS_【交换排序】
Java四大排序三、交换排序(1)冒泡排序冒泡排序顾名思义就是将数组中相应的元素通过每一次两两比较达到最顶,类似于冒泡称之为冒泡排序排序过程描述:1.依次拿到每一个数组中的元素 依次遍历2.拿到的数字与之后的每一位数字比较 如果小于数组中的数字则交换位置3.当数组的每一个元素都被排完之后数组按照要求拍好算法描述1.一个外层循环遍历整个要排序的数组2.内层循环将拿到的数字依次向后...原创 2019-05-09 19:57:51 · 143 阅读 · 0 评论 -
DS_【选择排序】
Java 四大排序二、选择排序(1)简单选择排序排序过程描述1.拿到一个数 依次与之后的每一个数进行比较 将最小的放在 原来第一的位置2.拿到第二个数 与之后的进行比较 最小的放在第二的位置3.第三个数以此类推 直到最后一个数 排序结束算法过程描述1.循环遍历数组i2.内嵌遍历i之后的数组3.i 与 j进行大小比较 小的放前代码实现public static void...原创 2019-05-06 21:26:18 · 670 阅读 · 0 评论 -
DS_【插入排序】
Java-四大排序一、插入排序(1)直接插入排序直接插入排序 在执行操作中将一段新的数据插入已经排好了序列中。例如:在进行身高排队中 来了一组没有排好序的队列,我们依据其身高大小进行排队我们选取1.第一个人 记为第一位 将第二位拿来与其进行比较,高则后小则前。这样就为第一个有序的序列2.第三个人进入排序,依次与第一人第二人进行比较,就成为第二个有序序列排序描述过程一组无序序列 a...原创 2019-05-05 17:04:35 · 247 阅读 · 0 评论 -
DS_【栈与队列】
Stack作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。个人理解:栈就是一种特殊的存储结构,存放的过程是先进后出栈1)定义一个Stack我们采用数组的方式实现一个栈pri...原创 2019-04-20 16:50:00 · 219 阅读 · 0 评论 -
DS_【单链表】
数组和链表都是线性存储结构的基础,栈和队列都是线性存储结构的应用~链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的组成:由n个节点离散的分配,每个节点由头结点和尾节点组成,头结点存放date,尾节点存放下个头结点的引用,在最后的节点没有下一个节点null01单向链表的接口public interface ILinked { ...原创 2019-04-10 16:27:27 · 161 阅读 · 0 评论 -
DS_【顺序表】
数据结构的顺序表01线性结构(1)除第一个和最后一个数据元素外,每个数据元素只有一个前驱数据元素和一个后继数据元素;(2)第一个数据元素没有前驱数据元素;(3)最后一个数据元素没有后继数据元素。02线性表线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性...原创 2019-04-06 16:49:16 · 227 阅读 · 0 评论 -
动态规划从简单到入门
动态规划问题从简单到入门在之前我们接触排序问题中,有一个特别好的思想被称为分治思想。分治思想的核心在与如何划分,怎样分治怎样大化小。由此延伸今天的问题 动态规划一般来说动态规划更像是递归的做法,抽取问题的相同点划分问题整体,将所有的步骤分开1.把原来的一个大问题分解成小步骤小问题例如: 斐波那契数列在解决时我们很难一次性计算出最终解,但是我们可以分析出,最终解是由前一个解推理而来 所以问题...原创 2019-07-22 15:59:47 · 103 阅读 · 0 评论 -
动态规划从简单到入门
(4)字符串分割给定一个字符串s和一个词典dict,确定s是否可以根据词典中的词分成一个或多个单词。比如,给定s = “leetcode”dict = [“leet”, “code”]返回true,因为"leetcode"可以被分成"leet code"像这种问题,它会变得比较抽象不能直接给你直观的东西,需要我们分析出动态递归的过程。子状态1 字符满足2 字符满足。。N 字符...原创 2019-07-25 22:30:51 · 157 阅读 · 0 评论 -
链表OJ_【返回链表的中间结点】【合并链表】【删除倒数n节点】
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。class Solution { public ListNode middleNode(ListNode head) { ListNode qick = head; ListNode slow = qick; whi...原创 2019-08-18 15:23:08 · 244 阅读 · 0 评论