java数据结构
Irr
这个作者很懒,什么都没留下…
展开
-
重学java数据结构和算法--排序算法:插入排序
插入排序 基本思想: 把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。 代码: public class InsertionSort { private static int[] arr = {5, -8, 6, 25, -74, 10, 0, 4}; public static原创 2021-03-26 17:55:50 · 133 阅读 · 0 评论 -
重学java数据结构和算法--排序算法:选择排序
选择排序 基本思想: 第一次从arr[O]~arr[n-1]中选取最小值,与arr[0]交换,第二次从 arr[1]arr[n-l]中选取最小值,与arr[1]交换,第三次从arr[2]arr[n-1]中选取最小值,与arr[2交换,…,第i次从arr[i-l]~arr[n-1]中选取最小值,与arr[i-1]交换,…,第n-1次从 arr[n-2]~arr[n-1]中选取最小值.与arr[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列。 示例代码: public class Sel原创 2021-03-26 15:42:46 · 83 阅读 · 0 评论 -
重学java数据结构和算法--排序算法:冒泡
排序算法:冒泡 基本思想: 从前往后,依次比较相邻两个元素的大小,如果前一个比后一个大,就交换位置; 每一趟冒泡排序,都会将大的元素往最后的位置移动,每一趟要经过(n-已经排序的元素个数)个元素,一共要经过n-1趟。所以时间复杂度为:O(n²) 示例代码: public class BubbleSort { private static int[] arr = {5, -8, 6, 25, -74, 10, 0, 4};//8 public static void main(Strin原创 2021-03-26 11:35:11 · 97 阅读 · 0 评论 -
重学java数据结构--栈
栈 定义:一种运算受限的线性表 特点: 先入后出 栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的 一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom) 根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元 素最先删除,最先放入的元素最后删除 简单实现一个栈结构: public class MyStack { private int Maxsize;//定义栈大小原创 2021-03-25 23:37:05 · 98 阅读 · 0 评论 -
重学java数据结构--链表
链表 定义:线性表的链式存储又称单链表,它是指通过一组任意的存储单元来存储线性表中的数据元素 特点: 链表是以节点的方式来存储,是链式存储。 每个节点包含 data域, next 域:指向下一个节点;循环链表还有pre域:指向前一个节点。 链表的各个节点不一定是连续存储。 链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定 (划重点)单链表:访问后继节点的时间复杂度为O(1);访问前驱节点的时间复杂度为O(n) 简单的链表都是老生常谈的话题了,所以作为复习就只关注一些重点和较难的链表问题: 1原创 2021-03-24 12:24:08 · 322 阅读 · 0 评论 -
重学java数据结构--队列(循环数组实现)
队列:一个有序列表,实现方式有两种—循环数组/链表 特点:先进先出(FIFO) 实现方式:循环数组 首先明确两个基本约定: 数组为空/满的判断:rear % maxsize == front(数组满);rear == front(数组空) 数组有效数据的个数:rear - front 说明: rear指向数组最后一个元素下一位,即当第一个数字填入数组时,front=0&rear=1;当第8个数字填入数组的时候,front=7&rear=8; 数组中的下标统一用,“尾:【rear%max原创 2021-03-23 13:43:18 · 172 阅读 · 4 评论 -
重学java数据结构--稀疏数组(SparseArray)
定义 稀疏数组,简单描述就是:当一个数组(以二维为例)中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。所以当出现这种情况的时候,我们可以将数组进行改变结构,具体方法是: 1)记录数组一共有几行几列,有多少个不为零的值 2)把具有不为零的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 如图(这里用一下尚硅谷的图dddd(手动doge)): 实现程序: public class sparsearray { public static void main(String原创 2021-03-21 14:56:33 · 292 阅读 · 0 评论