
数据结构
BUPT记号
这个作者很懒,什么都没留下…
展开
-
快速排序算法 C++实现
快速排序算法快排是对冒泡排序的改进。时间复杂度为O(nlog2n)。改进点:在冒泡排序中是对相邻位置上的比较和移动,每次交换只能前移或者后移一个单位;快排中,记录的比较和移动是从两端向中间进行,关键码较大的记录一次可以从前端移动到后端,记录移动距离较远,较少了总的比较次数和移动次数。 快速排序又称为分区交换排序。基本思想:首先选择一个轴值(比较的基准点),将待排序记录分割成独立的两...原创 2018-07-03 12:25:50 · 787 阅读 · 0 评论 -
算法分析(时间复杂度和空间复杂度)
算法分析(时间复杂度和空间复杂度)对于一个给定的算法需要做两项分析,第一就是证明算法的正确性,第二就是计算算法的复杂度。算法的复杂度包括时间复杂度和空间复杂度。1 度量算法效率的方法共存在两种方法:事后统计法和事前分析估计算法。事后统计法:先将算法实现,然后输入适当的数据运行,计算算法的时间复杂度和空间复杂度。事前分析估算法(渐进复杂度):对算法所消耗资源的一种估算方法。比较...原创 2018-07-02 16:48:30 · 3930 阅读 · 0 评论 -
二分查找 C++代码实现
相对于顺序查找技术,二分查找要求比较高。一般只适用于静态查找。二分查找的前提:线性表必须是关键码有序的,并且线性表顺序存储。基本思想:在有序表中,取中间值作为比较对象,若给定值与比较值相等,则查找成功;若给定值小于比较值,则在比较值左半区继续查找;若给定值大于中间值,则在比较值的右半区继续查找。直至查找结束。时间复杂度:O(logn)。时间复杂度即是程序计算的次数k,在二分查找中每...原创 2018-07-02 14:00:58 · 957 阅读 · 0 评论