数据结构及算法
念念有余
这个作者很懒,什么都没留下…
展开
-
树与二叉树
1、树的定义 树是由n (n ≥ 0)个节点组成的有限集合。如果n = 0,称为空树;如果n>0,则: ①有一个特定的称之为根的节点,它只有直接后继,但没有直接前驱; ②除根以外的其他节点划分为m (m ≥ 0)个互不相交的有限集合T0, T1, …, Tm-1,每个集合又是一棵树,并且称之为根的子树。每棵子树的根节点有且仅有一个直接前原创 2017-10-18 21:16:59 · 233 阅读 · 0 评论 -
冒泡算法
冒泡排序算法是经典的排序算法,数据两两比较(升序排列),若后面的数字比前面小,就交换位置,这样比较第一趟(比较了N-1次)后,最大的数字就到了最后 例如原数据位 8,4,9,1,3,第一趟比较完毕为: 4,8,1,3,9 第二趟最后一个数据就不用比较了,比较前N-1个数据,比较N-2次,比较完毕为 4,1,3,8,9 第三趟原创 2017-11-03 16:45:49 · 236 阅读 · 0 评论 -
链表翻转
链表的翻转,介绍单链表如何翻转。 一个链表如下 翻转后变成如下 在此我们采用头插入与头删除结合的方法,头插入和头删除参考 Linux学习(十):数据结构--表 我们用old表示无头的旧链表,head是新链表的表头。旧链表头删除,新链表头插入即可完成链表的翻转, 代码的实现 //改:数据翻转 int linklist_reverse(linknode_原创 2017-11-28 14:36:01 · 303 阅读 · 0 评论 -
快速排序
冒泡排序的时间复杂度是O(N2),这是一个非常高的时间复杂度,接下来看一下快速排序方法。 它的平均时间复杂度为O(NlogN),快速排序的最差时间复杂度和冒泡排序是一样的都是O(N2)。 快速排序的思想是“二分”的思想。 原理其实很简单,我们取一个数作为基准数,一般取第一个数即可,比它大的都放右侧,比它小的都放左侧。调整之后基准数字也调整到了正确位置,并且基准数字左侧原创 2018-01-03 21:33:47 · 221 阅读 · 0 评论