博客专栏  >  编程语言   >  数据结构与算法(java版)

数据结构与算法(java版)

使用java语言实现数据结构,从最基本的栈、链表到复杂的二叉树、红黑树等,的基本操作,同时加入了笔者自己的一些总结和扩展。还包括排序算法、查找算法等常用算法的分析与实践。

关注
40 已关注
19篇博文
  • 排序算法(九)——八大排序算法总结

    八大排序算法的稳定性及复杂度总结如下:选择排序算法准则每种排序算法都各有优缺点。因此,在实用时需根据不同情况适当选用,甚至可以将多种方法结合起来使用。影响排序的因素有很多,平均时间复杂度低的算法并不一...

    2015-08-18 08:32
    1839
  • 排序算法(八)——基数排序

    基本思想基数排序(Radix Sort)是在桶排序的基础上发展而来的,两种排序都是分配排序的高级实现。分配排序(Distributive Sort)的基本思想:排序过程无须比较关键字,而是通过“分配”...

    2015-08-16 15:54
    1608
  • 排序算法(七)——堆排序

    基本思想 堆排序是一种树形选择排序,是对直接选择排序的改进。   首先,我们来看看什么是堆(heap): (1)堆中某个节点的值总是不大于或不小于其父节点的值; (2)堆总是一棵完全二叉树(Compl...

    2015-08-13 08:39
    7988
  • 排序算法(六)——希尔排序

    基本思想 希尔排序是基于插入排序的,又叫缩小增量排序。 在插入排序中,标记符左边的元素是有序的,右边的是没有排过序的,这个算法取出标记符所指向的数据,存入一个临时变量,接着,在左边有序的数组中找到临时...

    2015-08-11 08:42
    1669
  • 排序算法(五)——快速排序

    基本思想 快速排序也是基于分治算法得。步骤如下: (1)选择一个基准元素,通常选择第一个元素或者最后一个元素; (2)通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值...

    2015-08-10 08:59
    1803
  • 排序算法(四)——归并排序与递归

    基本思想 分析归并排序之前,我们先来了解一下分治算法。 分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。 ...

    2015-08-08 00:03
    4447
  • 排序算法(三)——插入排序及改进

    插入排序 基本思想 在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数找到相应位置并插入,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。 ...

    2015-08-06 00:04
    2206
  • 排序算法(二)——选择排序及改进

    选择排序 基本思想 冒泡排序中有一个缺点,比如,我们比较第一个数a1与第二个数a2的时候,只要a1比a2大就会交换位置,但是我们并不能确定a2是最小的元素,假如后面还有比它更小的,该元素还会与a2...

    2015-08-06 00:03
    1686
  • 排序算法(一)——冒泡排序及改进

    冒泡排序 冒泡排序的效率很低,但是算法实现起来很简单,因此很适合作为研究排序的入门算法。 基本思想 对当前还未排好序的范围内的全部数,自上而下对相邻的俩个数依次进行比较和调整,让较大的数下沉,较小的数...

    2015-08-06 00:02
    4651
  • 数据结构之红黑树(三)——删除操作

    删除一个节点同样有可能改变树的平衡性,而且,删除所造成的不平衡性比插入所造成的平衡性的修正更加复杂。 化繁为简是算法分析中一个常用的方法。下面我们将欲删除节点分为三大类:欲删除节点为叶子节点、欲删除节...

    2015-07-31 08:43
    1144
  • 数据结构之红黑树(二)——插入操作

    插入或删除操作,都有可能改变红黑树的平衡性,利用颜色变化与旋转这两大法宝就可应对所有情况,将不平衡的红黑树变为平衡的红黑树。 在进行颜色变化或旋转的时候,往往要涉及祖孙三代节点:X表示操作的基准节点,...

    2015-07-30 09:20
    1351
  • 数据结构之红黑树(一)——基础分析

    在二叉树中已经探讨过,如果按照随机顺序插入树节点,绝大多数都会出现不平衡的情况。最坏的情况,插入的数据时有序的,二叉树将会变成链表,插入、删除的效率将会严重地降低 下图就是按照数据升序的顺序插入二叉树...

    2015-07-10 09:13
    1501
  • 数据结构之霍夫曼树

    计算机里每个字符在没有压缩的文本文件中都由一个字节(如ASCII码)或两个字节(如Unicode码)表示。这些方案中,每个字符需要相同的位数 下表列出了字母对应的ASCII码 字母          ...

    2014-12-23 08:38
    2201
  • 数据结构之二叉树

    通过前面的学习,我们知道,有序数组可以利用二分查找法快速的查找特定的值,时间复杂度为O(log2N),但是插入数据时很慢,时间复杂度为O(N);链表的插入和删除速度都很快,时间复杂度为O(1),但是查...

    2014-12-22 08:38
    3347
  • 数据结构之链表

    链表是一种插入和删除都比较快的数据结构,缺点是查找比较慢。除非需要频繁的通过下标来随机访问数据,否则在很多使用数组的地方都可以用链表代替 在链表中,每个数据项都包含在“链结点”中,一个链结点是某个类的...

    2014-12-12 08:43
    1697
  • 数据结构之队列

    栈是“后进先出”(LIFO,Last InFirst Out)的数据结构,与之相反,队列是“先进先出”(FIFO,First InFirst Out)的数据结构 队列的作用就像售票口前的人们站成的一排...

    2014-12-08 09:06
    1868
  • 数据结构之栈

    数组、链表、树等数据结构适用于存储数据库应用中的数据记录,它们常常用于记录那些现实世界的对象和活动的数据,便与数据的访问:插入、删除和查找特定数据项 而栈和队列更多的是作为程序员的工具来使用。他们主要...

    2014-12-07 09:36
    1790
  • 数据结构之数组

    数组是应用最广泛的一种数据结构,常常被植入到编程语言中,作为基本数据类型使用,因此,在一些教材中,数组并没有被当做一种数据结构单独拿出来讲解(其实数组就是一段连续的内存,即使在物理内存中不是连续的,在...

    2014-12-06 11:32
    2095
  • 数据结构与算法概念解析

    数据之间的相互关系称为逻辑结构。通常分为四类基本结构:  集合   结构中的数据元素除了同属于一种类型外,别无其它关系。  线性结构    结构中的数据元素之间存在一对一的关系。  树型结构     ...

    2014-12-24 08:47
    1941

img博客搬家
img撰写博客
img专家申请
img意见反馈
img返回顶部