
数据结构
我就是我--不一样的烟火
这个作者很懒,什么都没留下…
展开
-
B树、B-树、B+树
首先说明:B树即为B-树。这个要特别注意!在本文中,我们不在提及B树,只说B-树和B+树在说B-和B+树之前,先说一下二叉排序树。一、 二叉排序树又称二叉查找树,有如下性质:1)若它的左子树不空,则左子树上所有结点的值均小于它的根节点的值;2)若它的右子树不空,则右子树上所有结点的值均大于它的根节点的值;3)它的左右子树也分别为二叉排序树。上图为一棵二叉排序树。通常原创 2017-08-30 21:09:24 · 1087 阅读 · 0 评论 -
排序--冒泡排序和快速排序(java)
最近在准备面试和笔试,所以系统的复习下排序算法,本想着将排序算法一起写到一篇博客的,后来发现排序算法太多了,不写文字就写程序也会有很大的篇幅。因此决定分开写,本文介绍冒泡排序和快排两种算法。本文基于数据结构(c语言版--严蔚敏)的教材写的,程序用java实现。书中的文字还是有点字面语,我用大白话讲解。好,开始。(本文都是给一个无序的数组排序,设数组为a)本文代码本人亲测!!!博客三部曲:1、文原创 2017-09-01 20:17:39 · 716 阅读 · 0 评论 -
排序算法--堆排序(java)
堆排序这个单独写出来吧!研究了整整1天的时间,图很好理解,但是放在程序上总有些说不出的感觉,怎么调试也不对,终于功夫不负有心人,搞出来了。代码:本人亲测可用,欢迎尝试!(在网上找了好多程序,好像都有错误,也许是没找到对的)还是老套路,博客三部曲:1、文字描述 2、图片深入 3、程序辅助 简单说一下堆排序的过程:1、堆实际上是一棵完全二叉树,其任何一非叶节点满足原创 2017-09-02 14:36:56 · 342 阅读 · 0 评论 -
排序算法--直接插入排序、折半插入排序、希尔排序
插入排序这个比较简单,理解也原创 2017-09-02 15:07:24 · 1082 阅读 · 0 评论 -
排序算法--时间复杂度(平均时间,最坏情况)、空间复杂度
1、时间复杂度:一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法的时间量度记作: T(n) = O(f(n))它表示随问题规模的增大,算法执行的时间的增长率和f(n)的增长率相同,称作渐进时间复杂度,简称时间复杂度。2、空间复杂度简单点说:算法中用到的额外的空间原创 2017-09-02 15:49:02 · 5201 阅读 · 0 评论 -
递归--二叉树遍历,求深度,求二叉树节点个数
本文为递归实现二叉树的各种操作。二叉树的前序遍历:(根--左--右)public static void PreOrder(TreeNode tree){ if(tree != null){ System.out.print(tree.val); PreOrder(tree.left); PreOrder(tree.right); } }二叉树的中序遍历:(左-原创 2017-08-30 16:51:05 · 1440 阅读 · 0 评论 -
归并排序--java(递归)
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 排序方法:将一个大的序列分成两个小的子序列,分别对其进行排序,每个小的子序列再分为两个子序列,一直下去,到最后两个子序列只原创 2017-07-26 11:22:12 · 426 阅读 · 0 评论