博客专栏  >  编程语言   >  数据结构和算法

数据结构和算法

如果说数据结构是骨架,那么算法就是灵魂。没了骨架,灵魂没有实体寄托;没了灵魂,骨架也是个空壳。两者相辅相成,缺一不可,在程序中起到了砥柱中流的作用。本专栏详细解说经典的数据结构和算法。

关注
41 已关注
19篇博文
  • 常用数据结构和算法操作效率的对比总结

    前面介绍了经典的数据结构和算法,这一节我们对这些数据结构和算法做一个总结,具体细节,请参见各个章节的详细介绍,这里我们用表格来呈现它们的效率。1. 数据结构部分数据结构中常用的操作的效率表通用数据结构...

    2016-07-19 07:59
    7195
  • 【程序员面试金典】数组与字符串

    今天开始看《程序员面试金典》这本书,这本书里面的算法题还是挺好的,能学到很多新的思想,解决问题的方式。我会针对里面的内容,总结下算法题的解题方法和代码的实现,有些题我会加上自己的思考,提供不止一种解法...

    2016-04-17 17:55
    2263
  • 【数据结构和算法17】拓扑排序

    这一节我们学习一个新的排序算法,准确的来说,应该叫“有向图的拓扑排序”。所谓有向图,就是A->B,但是B不能到A。与无向图的区别是,它的边在邻接矩阵里只有一项(友情提示:如果对图这种数据结构部不太了解...

    2016-04-20 12:17
    2669
  • 【数据结构和算法16】堆排序

    堆排序,顾名思义就是利用堆这个数据结构对数据项进行排序,前面提到过,堆数据结构中,节点大于或等于自己的子节点。那么我们可以将待排序的数据项依次添加到堆中,然后再依次取出根节点即可。从堆中取出的数据项是...

    2016-04-19 19:54
    2056
  • 【数据结构和算法15】二叉树排序

    本文为博主原创文章,转载请注明出处:         顾名思义,二叉树排序就是利用二叉搜索树的特点进行排序,前面提到过二叉搜索树的特点是,左子节点比自己小,右子节点比自己大,那么二叉树排序的思想...

    2016-04-19 19:38
    2277
  • 【数据结构和算法14】归并排序

    归并算法的中心是归并两个已经有序的数组。归并两个有序数组A和B,就生成了第三个数组C,数组C包含数组A和B的所有数据项,并且使它们有序的排列在数组C中。首先我们来看看归并的过程,然后看它是如何在排序中...

    2016-04-19 19:17
    2751
  • 【数据结构和算法13】快速排序

    上一节我们学习了一个高级排序算法:希尔排序,这一节我们将讨论另一个高级排序算法:快速排序。         快速排序算法是最流行的排序算法,因为有充足的理由,在大多数情况下,快速排序都是最快的,执行...

    2016-04-16 21:00
    2317
  • 【数据结构和算法12】希尔排序

    上一章我们学习了冒泡排序、选择排序和插入排序三种基础排序算法,这三种排序算法比较简单,时间复杂度均为O(N2),效率不高。这节我们讨论一个高级排序算法:希尔排序。希尔排序是基于插入排序的,插入排序有个...

    2016-04-16 16:31
    2405
  • 【数据结构和算法11】基础排序

    前10节我们学习了一些经典的数据结构,从这节开始,我们将学习一些排序算法。这一节我们先学习几个基础排序算法:冒泡排序,选择排序和插入排序。1. 冒泡排序        冒泡排序算法运行起来非常慢,但在...

    2016-04-14 22:02
    2791
  • 【数据结构和算法10】 带权图

    上一节我们已经看到了图的边可以有方向,这一节里,我们将探讨边的另一个特性:权值。例如,如果带权图的顶点代表城市,边的权可能代表城市之间的距离,或者城市之间的路费,或者之间的车流量等等。 带权图归根究底...

    2016-04-13 15:41
    5008
  • 【数据结构与算法09】图

    在计算机程序设计中,图是最常用的结构之一。图是一种与树有些相像的数据结构,实际上,从数学意义上说,树是图的一种。然而在计算机程序设计中,图的应用方式与树不同。     前面讨论的数据结构都有一个框架,...

    2016-04-10 16:03
    2222
  • 【数据结构与算法08】 堆

    优先级队列可以用有序数组来实现,这种做法的问题是,尽管删除最大数据项的时间复杂度为O(1),但是插入还是需要较长的O(N)时间,这是因为必须移动数组中平均一半的数据项以插入新数据项,并在完成插入后,数...

    2016-04-09 16:41
    2271
  • 【数据结构与算法07】哈希表

    哈希表也称为散列表,是根据关键字值(key value)而直接进行访问的数据结构。也就是说,它通过把关键字值映射到一个位置来访问记录,以加快查找的速度。这个映射函数称为哈希函数(也称为散列函数),映射...

    2016-04-12 23:59
    5510
  • 【数据结构和算法06】2-3-4树

    从第4节的分析中可以看出,二叉搜索树是个很好的数据结构,可以快速地找到一个给定关键字的数据项,并且可以快速地插入和删除数据项。但是二叉搜索树有个很麻烦的问题,如果树中插入的是随机数据,则执行效果很好,...

    2016-04-13 08:57
    4296
  • 【数据结构和算法05】 红-黑树(看完包懂~)

    从第4节的分析中可以看出,二叉搜索树是个很好的数据结构,可以快速地找到一个给定关键字的数据项,并且可以快速地插入和删除数据项。但是二叉搜索树有个很麻烦的问题,如果树中插入的是随机数据,则执行效果很好,...

    2016-04-13 15:50
    10541
  • 【数据结构与算法04】二叉树

    在有序数组中,可以快速找到特定的值,但是想在有序数组中插入一个新的数据项,就必须首先找出新数据项插入的位置,然后将比新数据项大的数据项向后移动一位,来给新的数据项腾出空间,删除同理,这样移动很费时。显...

    2016-04-13 00:20
    7015
  • 【数据结构和算法03】链表

    在第一章的数组中,我们看到数组作为数据存储结构有一定的缺陷。在无序数组中,搜索时低效的;而在有序数组中,插入效率又很低;不管在哪一种数组中删除效率都很低。况且一个数组创建后,它的大小是无法改变的。  ...

    2016-04-12 20:29
    2382
  • 【数据结构与算法02】栈与队列

    我们知道,在数组中,若知道数据项的下标,便可立即访问该数据项,或者通过顺序搜索数据项,访问到数组中的各个数据项。但是栈和队列不同,它们的访问是受限制的,即在特定时刻只有一个数据项可以被读取或者被删除。...

    2016-04-11 22:49
    2512
  • 【数据结构与算法01】数组

    数组是应用最广泛的数据存储结构。它被植入到大部分的编程语言中,由于数组十分易懂,所以在这里就不赘述,主要附上两端代码,一个是普通的数组,另一个是有序数组。有序数组是按关键字升序(或降序)排列的,这种排...

    2016-04-11 22:04
    2948

SpringMVC学习
11161254
MyBatis学习
16118365
Java并发技术
2083468
项目实战总结
35381958
设计模式之禅
842691
J2EE组件
18132751
Java进阶
29116433

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