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