#数据结构与算法

数据结构---树---总结

一,一些定义树的深度定义:对于树中的节点n(i),n(i)的深度定义为,从根到n(i)的唯一路径的长度。树的高度定义:对于树中的节点n(i),n(i)的高度定义为,从n(i)到树中叶子节点的最长路径的长度。因为树中可能有多个叶子结点,n(i)到每个叶子结点都会有路径,路径最长的即为n(i)的高度。 二,表达式...
代码星球 代码星球·2020-04-04

随机序列生成算法---生成前N个整数的一组随机序列

问题描述:给定输入N,生成从1开始的:1,2,3,4,......N一组随机序列,序列中的数不能重复出现。比如:N=5,合法的随机序列为{4,3,1,5,2}、{3,1,4,2,5}……非法的序列有{5,4,1,2,1}来源:《数据结构与算法分析-MAW著 第二章习题2.8》&nb...

数据结构--堆的实现(下)

1,堆作为优先级队列的应用对于普通队列而言,具有的性质为FIFO,只要实现在队头删除元素,在队尾插入元素即可。因此,这种队列的优先级可视为按时间到达的顺序来衡量优先级的。到达得越早,优先级越高,就优先出队列被调度。更一般地,元素不能单纯地按时间到来的先后来分优先级(或者说插入的顺序),在这种情形下,使用堆更容易表达优先...
代码星球 代码星球·2020-04-04

二叉树的创建算法

1,导论什么是数据结构?Adatastructureisanaggregationofdatacomponentsthattogetherconstituteameaningfulwhole。在计算机领域中,技术千变万化,但是基本的数据结构始终只有那几种。而抽象数据类型(ADT)就是用来描述数据结构具有的功能。比如,二...
代码星球 代码星球·2020-04-04

数据结构--图 的JAVA实现(下)

在上一篇文章中记录了如何实现图的邻接表。本文借助上一篇文章实现的邻接表来表示一个有向无环图。1,概述图的实现与邻接表的实现最大的不同就是,图的实现需要定义一个数据结构来存储所有的顶点以及能够对图进行什么操作,而邻接表的实现重点关注的图中顶点的实现,即怎么定义JAVA类来表示顶点,以及能够对顶点进行什么操作。为了存储图中...
代码星球 代码星球·2020-04-04

数据结构--图 的JAVA实现(上)

1,摘要:本系列文章主要学习如何使用JAVA语言以邻接表的方式实现了数据结构---图(Graph),这是第一篇文章,学习如何用JAVA来表示图的顶点。从数据的表示方法来说,有二种表示图的方式:一种是邻接矩阵,其实是一个二维数组;一种是邻接表,其实是一个顶点表,每个顶点又拥有一个边列表。下图是图的邻接表表示。从图中可以看...
代码星球 代码星球·2020-04-04

一致性哈希算法学习及JAVA代码实现分析

1,对于待存储的海量数据,如何将它们分配到各个机器中去?---数据分片与路由当数据量很大时,通过改善单机硬件资源的纵向扩充方式来存储数据变得越来越不适用,而通过增加机器数目来获得水平横向扩展的方式则越来越流行。因此,就有个问题,如何将这些海量的数据分配到各个机器中?数据分布到各个机器存储之后,又如何进行查找?这里主要记...

AVL树的JAVA实现及AVL树的旋转算法

1,AVL树又称平衡二叉树,它首先是一颗二叉查找树,但在二叉查找树中,某个结点的左右子树高度之差的绝对值可能会超过1,称之为不平衡。而在平衡二叉树中,任何结点的左右子树高度之差的绝对值会小于等于1。2,为什么需要AVL树呢?在二叉查找树中最坏情况下查找某个元素的时间复杂度为O(n),而AVL树能保证查找操作的时间复杂度...

数据结构--堆的实现(上)

1,堆是什么?堆的逻辑结构是一颗完全二叉树,但物理结构是顺序表(一维数组)。同时,此处的堆不要与JAVA内存分配中的堆内存混淆。这里讨论的是数据结构中的堆。参考:计算机中的堆是什么?2,数组实现堆的优势及特点由于堆从逻辑上看是一颗完全二叉树,因此可以按照层序遍历的顺序将元素放入一维数组中。注意为了方便,数组的元素存放从...
代码星球 代码星球·2020-04-04

词典的实现(3)--使用JAVA类库ArrayList实现Map数据结构

1,在词典的实现(2)-借助顺序表(数组)实现词典文章中使用了自定义的数组代替ArrayList,并实现了Map数据结构的基本功能。而借助JAVA类库ArrayList类的一些方法可以更加容易地实现Map。 2,实现思路如下ArrayListDictionary.java中定义了一个ArrayList的对象,...

用贪心算法近似求解 Loading Balance 问题(作业调度的负载均衡)

一,LoadingBalance问题描述:有m台相同的机器及n个作业,其中m={M(1),M(2),……M(m)}、n={J(1),J(2),……J(n)}。每个作业都有一个处理时间,记为t。如,;t(j)表示作业J(j)的处理时间。任意机器在某个时刻只能处理一个...

贪心算法之活动选择问题--求解现实问题的思路

参考《算法导论第二版P222页)一,如何把现实的问题转变成数学问题?即数学建模的思路?1,问题描述:现有一组相互竞争的活动,如何调度能够找出一组最大的活动(活动数目最多)使得它们相互兼容?2,问题转化:首先,按活动的结束时间单调递增进行排序。那么,为什么要按结束时间排序呢?这个问题留到后面解释。其次,定义合适的问题子空...

插入排序算法的JAVA实现

1,对元素进行排列时,元素之间需要进行比较,因此需要实现Comparable<T>接口。即,<TextendsComparable<T>>.更进一步,如果允许待比较的类型可以和它的父类型进行比较,则需要写成:<TextendsComparable<?superT>,...

选择排序算法的JAVA实现

1,采用选择排序对元素进行排列时,元素之间需要进行比较,因此需要实现Comparable<T>接口。即,<TextendsComparable<T>>.更进一步,如果允许待比较的类型可以和它的父类型进行比较,则需要写成:<TextendsComparable<?super...

POJ-数据结构-优先队列模板

优先队列模板优先队列是用堆实现的,所以优先队列中的push()、pop()操作的时间复杂度都是O(nlogn)。优先队列的初始化需要三个参数,元素类型、容器类型、比较算子。需要熟悉的优先队列操作:q.top()访问堆顶q.push()入堆q.pop()出堆不同类型元素的优先级设置定义堆需要注意最后两个>>之...
首页上一页...119120121122123...下一页尾页