排序算法的分析
文章平均质量分 87
快速排序,归并排序,希尔排序,堆排序等几种排序算法的优缺点分析和改进
Qregi
刚入行的初级程序员
展开
-
【排序算法】堆排序的分析
在分析堆排序之前,我先讲一讲什么是堆如果一棵树中每个节点的关键字都大于或等于所有子节点中的关键字(子节点存在),那么就称树是堆有序的,在一棵堆有序的树中,不存在关键字大于根节点关键字的节点,那么什么是堆呢?堆是一个节点的集合,表现形式为数组,其中关键字按照堆有序的完全二叉树的形式排列如上图,上图是一个完全二叉树,而且每个关键字都大于他的任意一个子节点(子节点存在),把这棵树放到数组里面,如下:ar...原创 2018-03-24 16:30:42 · 388 阅读 · 0 评论 -
【算法基础】归并排序的分析
归并排序也是基本的排序之一,也挺重要的,所以写这么一篇博客总结一下归并排序的一个特性是,它对N个元素的文件排序所需要的时间与NlogN成正比,它的缺点是所需需要的空间和N成正比,要克服这个缺点的话,会造成代码非常复杂而且开销巨大。所以如果速度不是主要的问题,而且有足够的空间来使用,归并排序是值得考虑的归并排序是一种稳定的方法, 时间复杂度:T(n) = O(n㏒n),空间复杂度:S(n) = O(...原创 2018-03-23 12:08:45 · 1202 阅读 · 0 评论 -
【算法基础】关于分治法
分治法,字面意思是“分而治之”把一个问题分成两个或者多个相似的子问题再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这就是分治法,当然这些肯定是我从百度上抄的。分治法分为以下三个步骤:(1)将原问题分解为多个子问题。(2)对子问题递归求解。(3)将子问题合并为原问题的解例如:使用分治法求解数组中的最大值:#define Type int;Type Fi原创 2018-03-11 19:55:20 · 1592 阅读 · 0 评论 -
【数据结构】数据结构之排序算法
所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法可以分为稳定排序和不稳定排序比如对一个数组,如果A[i] = A[j],A[i]原来在位置前,排序后A[i]还是要在A[j]位置前,这样的排序叫稳定排序。下面是几种常见的排序算法:一、插入类排原创 2018-03-07 15:29:08 · 714 阅读 · 0 评论 -
【排序算法】快速排序的分析改进
基本的快速排序最基本的快速排序是由C.A.R.Hoare在1960年提出的,快速排序的算法是一种分治排序算法它将数组划分为两个部分,然后分别对两个部分进行排序快速每次对数组重新排序,选择一个基准值key,然后让数组满足下面的两个个条件·a[l], ... ,a[i - 1]之中的元素都比key值要小·a[i + 1], ... ,a[r]之中的元素都比key值要大然后通过划分来完成排序,递归的去处...原创 2018-03-19 17:24:17 · 9349 阅读 · 0 评论