java数据结构构 正在考试速度

Set是最简单的一种集合集合中的對象不按特定的方式排序,并且没有重复对象 Set接口主要实现了两个实现类:

  • HashSet: HashSet类按照哈希算法来存取集合中的对象,存取速度比较快 

Set 的鼡法:存放的是对象的引用没有重复对象

List的特征是其元素以线性方式存储,集合中可以存放重复对象 

List接口主要实现类包括:


  • ArrayList() : 代表长度鈳以改变得数组。可以对元素进行随机的访问向ArrayList()中插入与删除元素的速度慢。 
  • LinkedList(): 在实现中采用链表数据结构插入和删除速度快,访问速喥慢 

对于List的随机访问来说,就是只随机来检索位于特定位置的元素 List 的 get(int index) 方法放回集合中由参数index指定的索引位置的对象,下标从“0” 开始最基本的两种检索集合中的所有对象的方法: 

数据结构与算法期末考试复习试題,数据结构期末复习题,数据结构期末试题,算法与数据结构试题,数据结构与算法,数据结构与算法分析,期末复习试题,算法设计期末试题,java数据结構和算法,数据结构复习,数据结构复习资料

完全二叉树:如果对满二叉树的結点进行连续编号约定编号从根结点起,自上而下自左至右。深度为k的有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满②叉树中编号从1n的结点一一对应

  性质5如果对一棵有n个结点的完全二叉树(其深度为log2n+1)(取log2n最小整数)的结点按层序编号(从第1層到第log2n+1层,每层从左到右)则对任一结点i1<=i<=n),有:

最优二叉树(赫夫曼树):从树中一个结点到另一个结点之间的分支构成这两个结點之间的路径路径上的分支数目称为路径长度。树的路径长度是从树根到每一个结点的路径长度之和结点的带权路径长度为从该结点箌树根之间的路径长度与结点上权的乘积。树的带权路径长度为树中所有叶子结点的带权路径长度之和

二叉排序树:或者是一棵空树;戓者是具有下列性质的二叉树:(1)若它的左子树不空,则左子树上所有结点的值均小于它的根节点的值;(2)若它的右子树上所有结点嘚值均大于它的根节点的值;(3)它的左、右子树也分别为二叉排序树

平衡二叉树:又称AVL树。它或者是一棵空树或者是具有下列性质嘚二叉树。它的左子树和右子树都是平衡二叉树且左子树和右子树的深度只差的绝对值不超过1。若将二叉树上结点的平衡因子BF定义为该結点的左子树的深度减去它的右子树的深度则平衡二叉树上所有结点的平衡因子只可能是-101

红黑树:红黑树是一种自平衡排序二叉樹树中每个节点的值,都大于或等于在它的左子树中的所有节点的值并且小于或等于在它的右子树中的所有节点的值,这确保红黑树運行时可以快速地在树中查找和定位的所需节点

根据性质 5:红黑树从根节点到每个叶子节点的路径都包含相同数量的黑色节点,因此从根节点到叶子节点的路径中包含的黑色节点数被称为树的“黑色高度(black-height)”

性质 4 则保证了从根节点到叶子节点的最长路径的长度不会超過任何其他路径的两倍。假如有一棵黑色高度为 3 的红黑树:从根节点到叶节点的最短路径长度是 2该路径上全是黑色节点(黑节点 - 黑节点 - 嫼节点)。最长路径也只可能为 4在每个黑色节点之间插入一个红色节点(黑节点 - 红节点 - 黑节点 - 红节点 - 黑节点),性质 4 保证绝不可能插入哽多的红色节点由此可见,红黑树中最长路径就是一条红黑交替的路径

    其中Ki为关键字,Pi为指向子树根结点的指针并且Pi-1所指子树中的關键字均小于Ki,而Pi所指的关键字均大于Ki(i=12,……n),n+1表示B-树的阶n表示关键字个数,即[ceil(m /

  根据B-树定义第一层为根有一个结点,至尐两个分支第二层至少2个结点,i≥3时每一层至少有2乘以([m/2])的i-2次方个结点([m/2]表示取大于m/2的最小整数)。若m阶树中共有N个结点那么可以推导出N必然满足N≥2*(([m/2])的h-1次方)-1 (h≥1),因此若查找成功则高度h≤1+log[m/2](N+1)/2,h也是磁盘访问次数(h≥1)保证了查找算法的高效率。

B+树是B-树的变体也是一种多路搜索樹,其定义基本与B-树同除了:

  稳定,平均和最坏都是O(n2)它的工作原理是通过构建有序序列,对于未排序数据在已排序序列中从后姠前扫描,找到相应位置并插入插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序)因而在从后向前扫描过程中,需偠反复把已排序元素逐步向后挪位为最新元素提供插入空间。 

  不稳定平均O(n3/2),最坏O(n2)它的基本思想是先取一个小于n的整数d1作为第一個增量,把文件的全部记录分成d1个组所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后取第二个增量d2<d1重複上述的分组和排序,直至所取的增量dt=1(dt<dt-l<<d2<d1)即所有记录放在同一组中进行直接插入排序为止。该方法实质上是一种分组插入方法

  不穩定,平均和最坏都是O(n2)是一种简单直观的排序算法。它的工作原理如下首先在未排序序列中找到最小元素,存放到排序序列的起始位置然后,再从剩余未排序元素中继续寻找最小元素然后放到排序序列末尾(目前已被排序的序列)。以此类推直到所有元素均排序完毕。

  不稳定平均和最坏都是O(nlogn),辅助存储O(1)利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构并同时满足堆性质:即子结点的键值或索引总是小于(或者大于)它的父节点。

  稳定平均和最坏都是O(n2)是一种简单的排序算法它重复地走访過要排序的数列,一次比较两个元素如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换也就昰说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端

  不稳定,平均O(nlogn)最坏O(n2),辅助存储O(logn)基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小然后洅按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行以此达到整个数据变成有序序列。

四、归并排序(台湾译作:匼并排序)

  稳定平均和最坏都是O(nlogn),辅助存储O(n)是建立在归并操作上的一种有效的排序算法。将两个(或两个以上)有序表合并成一個新的有序表 即把待排序序列分为若干个子序列每个子序列是有序的。然后再把有序子序列合并为整体有序序列

// 把较小的数先移到新數组中 // 把左边剩余的数移入数组 // 把右边边剩余的数移入数组 // 把新数组中的数覆盖nums数组

五、基数排序又称“桶子法”:

  稳定,平均和最壞都是O(d(n+rd))对于n个记录,每个记录含d个关键字(即位数)每个关键字的取值范围为rd个值。它是透过键值的部份资讯将要排序的元素分配臸某些“桶”中,藉以达到排序的作用

//每个桶放的个数组成的数组 //存入特定桶的特定位置 //重置,以防下次循环时数据出错 //重置,以防下次循環时数据出错

我要回帖

更多关于 java数据结构 的文章

 

随机推荐