数据结构和算法
天道酬巧
王师北定中原日,越甲三千可吞吴
展开
-
数据结构和算法九:查找算法
文章目录常用查找算法线性查找二分查找常用查找算法顺序(线性)查找二分查找插值查找斐波那契查找线性查找不要求数列有序,遍历数列,找到就返回即可二分查找要求序列有序package com.atguigu.search;import java.util.ArrayList;import java.util.List;public class Search { public static void main(String[] args) { int[] ar原创 2020-08-19 21:50:47 · 93 阅读 · 0 评论 -
数据结构和算法八:排序算法
文章目录排序的分类时间复杂度常见的时间复杂度平均时间复杂度和最坏时间复杂度空间复杂度排序的分类内部排序:指将需要处理的所有数据都加载到内存中进行排序外部排序:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序常见的排序算法分类:时间复杂度一般情况下,算法中的基本操作语句的重复执行次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大是,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n))原创 2020-08-10 21:16:38 · 103 阅读 · 0 评论 -
数据结构和算法七:递归
文章目录简介递归可以解决的问题递归需要遵守的规则简介简单的讲:递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时让代码变得简洁。递归可以解决的问题各种数学问题: 8皇后问题,汉诺塔,阶乘问题,迷宫问题,球和篮子的问题各种算法中也会使用到,比如:快排,归并排序,二分查找,分治算法等将用栈解决的问题,改为使用递归,使代码更简洁递归需要遵守的规则执行一个方法时,就创建一个新的受保护的独立空间(栈空间)方法的局部变量是独立的,不会相互影响如果方法中使用原创 2020-07-29 21:33:04 · 114 阅读 · 0 评论 -
数据结构和算法六:栈
文章目录简介栈的应用场景用数组实现栈用链表实现栈使用栈实现综合计算器简介栈的英文为(stack)栈是一个先入后出(FILO)的有序列表栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一段,为变化的一段,称为栈顶,另一端为固定的一段,称为栈底根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素先删除,最先放入的元素最后删除栈的应用场景子程序的调用:在跳往子程序前,会先将下个指令的地址存在堆栈中,直到子程原创 2020-07-26 19:04:53 · 100 阅读 · 0 评论 -
数据结构和算法五:单向环形链表和约瑟夫问题
文章目录约瑟夫问题约瑟夫问题设编号为1,2,…n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的按个人出列,它的下一位又从1开始报数,数到m的那个人又出列,一次类推,知道所有人出列为止,由此产生一个出队编号的序列。假设:n = 5 即有5个人k = 1 从第一个人开始报数m = 2 数两下出队顺序2->4->1->5->3采用单向环形链表解决约瑟夫问题构建一个单向环形链表1.先创建第一个节点,让first指向该节点,并形成原创 2020-07-25 14:18:53 · 239 阅读 · 0 评论 -
数据结构和算法四:双向链表
文章目录原创 2020-07-25 12:08:13 · 94 阅读 · 0 评论 -
数据结构和算法三:单链表
文章目录1.简介2.应用实例2.1直接添加到链表尾部2.2根据排名将英雄插入到指定位置2.3修改节点信息(根据编号修改)2.4删除节点3.总结思考3.1整体代码1.简介链表是以节点的方式来存储每个节点包含data域,next域:指向下一个节点内存中的物理位置是不连续的链表分带头节点的链表和无头节点的链表2.应用实例使用带head头的单向链表实现–水浒英雄排行榜管理完成对英雄人物的增删改查操作第一种:直接添加到链表尾部第二种:根据排名将英雄插入到指定位置(如果对应位置已经存在英雄,原创 2020-07-18 19:39:33 · 144 阅读 · 0 评论 -
数据结构和算法二:队列
文章目录1.简介2.数组模拟队列使用数组模拟环形队列1.简介队列是一个有序列表,可以用数据或是链表来实现遵循先入先出的原则2.数组模拟队列弊端:数组不能够重复使用优化:使用环形队列package com.atguigu.queue;import javax.sound.midi.Soundbank;import java.util.Scanner;public class ArrayQueueDemp { public static void main(String[]原创 2020-07-18 16:20:45 · 80 阅读 · 0 评论 -
数据结构和算法一:稀疏数组
文章目录1.数据结构分类2.稀疏数组2.1代码实现1.数据结构分类数据结构包括:线性结构和非线性结构线性结构线性结构是最常用的数据结构,其特点是数据元素之间存在一对一的线性关系线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构。顺序存储的线性表称为顺序表,顺序表中的存储元素时连续的链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息线性结构常见的有:数组、队列、链表和栈非线性结构非线性结构包括:二维数组,多维数组,广义表,原创 2020-07-18 11:01:02 · 139 阅读 · 0 评论