数据结构
撒手没...(吼! 大壮)
这个作者很懒,什么都没留下…
展开
-
数据结构(一)------数据结构和算法、动态数组
数据结构与算法要想了解数据结构,必须首先了解一下什么是数据?什么是结构?数据:能被计算机存储、识别、和计算例如:内存:对象、变量等硬盘:音乐、图片等结构:就是数据与数据之间一种或多种特定的关系。数据结构和算法起到什么作用?数据结构是对在计算机内存中(或磁盘)中的数据的一种规划。数据结构包括数组、链表、栈、二叉树、哈希表等。那么看看数据结构的特性:数据结构 ...原创 2019-09-19 20:10:10 · 245 阅读 · 0 评论 -
排序算法
影响排序算法性能的条件 合适的算法策略(算法好坏的本质)数据的规模情况(处理的数据量的大小) 数据的分布情况(完全随机、大致有序、大量重复)排序算法的稳定性 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[j]=rj], 且r[]在r[j]之前,而在排序后的序列中,r[]仍在rj]之前, ...原创 2019-10-08 19:14:55 · 142 阅读 · 0 评论 -
优先队列
出队顺序和入队顺序无关。优先级相关,本身还是队列应用:任务管理器中选择优先级高的任务执行游戏中塔防类游戏优先攻击(距离、威胁、先后)import com.oupeng.p3队列.Queue;public class PriorityQueue<E extends Comparable<E>> implements Queue<E> { privat...原创 2019-10-08 10:58:58 · 108 阅读 · 0 评论 -
堆和优先队列
二叉堆二叉堆是一颗完全二叉树,堆中的某个结点的值总是不大于父节点的值,通常这种堆称为最大堆(相应的可以定义最小堆)下层的某一元素不一定小于上层的某一元素,既然是完全二叉树,所以用数组定义该结构。import java.util.Iterator;import javax.print.attribute.standard.MediaSize.Other;import com.oupen...原创 2019-10-08 10:23:39 · 114 阅读 · 0 评论 -
数据结构(7)-----二分搜索树
二分搜索树(Binary Search Tree)叫 二叉搜索树 、二叉排序树本身是二叉树,对于每一个结点来说,其规定是。每一个结点,大于其左子树的所有结点的值,小于其右子树的所有结点的值。同样,其子树也是一颗二分搜索树,那么该树中元素要具有可比性不包含重复元素。1.首先因为二分搜索树中,数据需要可比性,那么让数据继承Comparableimport java.util.Itera...原创 2019-10-03 20:25:46 · 131 阅读 · 0 评论 -
递归实现---------链表
//链表本身是具有天然递归性。public class LinkedListRecursion<E> implements List<E> { private class Node{ E data; //数据域 Node next; //指针域 public Node(){ this(null,null); } public Node(E...原创 2019-09-26 09:21:49 · 241 阅读 · 0 评论 -
数据结构(六)------树
树:1.树的概述2.二叉树概述3.二分搜索树4.堆和优先队列5.线段树6.Trie前缀树7.并查集8.AVL树9.红黑树树的定义:树(Tree) 是n (n≥0) 个结点的有限集。当n=0时称为空树。在任意一颗非空树中: (1) 有且仅有一个特定的称为根(root) 的结点; (2) 当n>1时,其余结点可分为m (m>0) 个互不相交的有限集T1、T2、… Tm...原创 2019-09-25 16:35:53 · 246 阅读 · 0 评论 -
课外拓展--
树的存储结构:双亲表示法:我们人可能因为种种原因,没有孩子,但无论是谁都不可能是从石头里蹦出来的,孙悟空显然不能算是人,所以是人一-定会有父母。树这种结构也不例外,除了根结点外,其余每个结点,它不一定有孩子,但是一-定有且仅有一个双亲。我们假设以一组连续空间存储树的结点,同时在每个结点中,附设一个指示器指示其双亲结点到链表中的位置。也就是说,每个结点除了知道自己是谁以外,还知道它的双亲在哪里...原创 2019-09-25 14:57:32 · 151 阅读 · 0 评论 -
数据结构(五)------递归
今天我们来认识一下------------------递归!看看这个你会更快的理解:当你往镜子前面一站,镜子里面就有-一个你的像。 但你试过两面镜子一起照吗?如果A、B两面镜子相互面对面放着,你往中间- -站,嘿,两面镜子里都有你的千百个“化身”。为什么会有这么奇妙的现象呢?原来,A镜子里有B镜子的像,B镜子里也有A镜子的像,这样反反复复,就会产生-连串的“像中像”。这是一种递归现象.1....原创 2019-09-23 21:17:03 · 359 阅读 · 0 评论 -
数据结构(单向循环链表-------约瑟夫问题)
那么看看约瑟夫问题是什么问题?据说著名犹太历史学家Josephus有过一下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲在一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成- -个圆圈,由第1个 人开始报数,每报数到第3个人该人必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus和他的朋友并不想遵从,J...原创 2019-09-20 16:05:41 · 280 阅读 · 0 评论 -
数据结构(四)--------单向链表、单向循环链表
动态链表:在学过数组后,发现数组的存储结构有一定的缺陷。就是查找效率高,但是 增、删、改效率低, 还有就是数组的大小是不可变的。接下来介绍一种新的数据存储结构(链表)相对于数组来说还是有一些不同的地方。链表:是一种线性的数据结构,相比数组,链表更加灵活,通过指针去进行增、删、改查,但是链表不能通过下标去查询。一个链表结点包含数据域和指针域。代码实现:private class Nod...原创 2019-09-19 20:01:38 · 227 阅读 · 0 评论 -
数据结构(三)---------队列
队列的定义:队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表队列 :先进先出 First In Last Out的线性表 , 简称 FIFO队尾: 允许插入的一端队头:允许删除的一端称队列的顺序存储结构-----入队平均 O(n)顺序存储出队列-----O(n)每一次出队 都为最坏情况队列接口Queue的定义编写接口public interface Que...原创 2019-09-18 15:58:42 · 154 阅读 · 0 评论 -
数据结构(二)-----栈、双端栈
今天我们来了解一个内存中也会用到的数据结构-----栈大部分的微处理器运用了栈的的体系结构,例如运行一个方法时,把它的返回地址和参数压入栈,当方法返回结束时,数据出栈。那么我们来了解一下栈:(先进后出)栈: 只在栈顶(线性表的表尾)进行插入和删除操作这么看栈的定义,栈就是特殊的线性表啊因为栈的特殊性,所以对于栈也要定义了自己的方法(说栈是特殊的线性表)所以我们基于线性表去实现栈即可。...原创 2019-09-18 08:58:00 · 383 阅读 · 0 评论 -
二分查找
public class erfenTEST { public static void main(String[] args) { int[] arr = {1,2,3,4,5,6,7,8,9,10}; int cur = 7;// System.out.println(ef(arr , cur));// ef1(arr ,cur); System.out.println(e...原创 2019-10-10 09:30:05 · 93 阅读 · 0 评论