随笔分类 -  数据结构/算法

摘要:快速排序时间复杂度为O(n×log(n))的证明之前只知道快速排序的平均时间复杂度为O(n×log(n)),最糟糕时复杂度为O(n^2),但却不知道具体原因,今天好好证明一下,最后部分摘自《算法导论》。首先再介绍一遍快排的思想:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一... 阅读全文
posted @ 2014-05-22 11:17 Never say Ever 阅读(55710) 评论(1) 推荐(7) 编辑
摘要:平衡二叉查找树的一些知识总结一、首先说明一下二叉查找树的定义:二叉查找树的定义:二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree),亦称二叉搜索树。 它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的... 阅读全文
posted @ 2014-05-21 12:01 Never say Ever 阅读(1034) 评论(0) 推荐(0) 编辑
摘要:二叉树的非递归遍历最近看书上说道要掌握二叉树遍历的6种编写方式,之前只用递归方式编写过,这次就用非递归方式编写试一试。C++编程练习(8)----“二叉树的建立以及二叉树的三种遍历方式“(前序遍历、中序遍历、后续遍历)递归的思想也就是栈的思想,既然不用递归,那就改用栈的方式。“递归=栈”1、前序遍历... 阅读全文
posted @ 2014-05-15 17:58 Never say Ever 阅读(292) 评论(0) 推荐(0) 编辑
摘要:快速排序基本思想:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。算法介绍:设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小... 阅读全文
posted @ 2014-05-12 21:33 Never say Ever 阅读(497) 评论(0) 推荐(0) 编辑
摘要:分治、动态规划、贪婪 之 算法分析分治与动态规划都用到了递归的思想,但是对他们之间的区别在概念上一直比较模糊,今天附带贪婪选择稍微整理一下他们。算法之道上说,标准分治、动态规划、贪婪选择称得上是孙子兵法的下、中、上策。标准分治虽然将大问题分解成小问题,但是每个小问题都需要解决,相当于逢城必攻实属下策... 阅读全文
posted @ 2014-05-11 10:08 Never say Ever 阅读(760) 评论(0) 推荐(0) 编辑
摘要:归并排序归并排序(Merging Sort)的原理:假设初始序列含有 n 个记录,则可以看成是 n 个有序的子序列,每个子序列的长度为1,然后两两归并,得到 [n/2] ([ x ] 表示不小于 x 的最小整数)个长度为 2 或 1 的有序子序列;再两两归并,·······,如此重复,直至得到一个长... 阅读全文
posted @ 2014-05-09 17:18 Never say Ever 阅读(344) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示