写在前面 一直很惧怕算法,总是感觉特别伤脑子,因此至今为止,几种基本的排序算法一直都不是很清楚,更别说时间复杂度、空间复杂度什么的了。 今天抽空理了一下,其实感觉还好,并没有那么可怕,虽然代码写出来还是磕磕绊绊,但是思想和原理还是大致上摸清楚了,记录、分享。 另一篇文章:三种非比较排序算法 ...
概述 本文对比较常用且比较高效的排序算法进行了总结和解析,并贴出了比较精简的实现代码,包括选择排序 插入排序 归并排序 希尔排序 快速排序等。算法性能比较如下图所示: 选择排序 选择排序的第一趟处理是从数据序列所有n个数据中选择一个最小的数据作为有序序列中的第 个元素并将它定位在第一号存储位置,第二趟处理从数据序列的n 个数据中选择一个第二小的元素作为有序序列中的第 个元素并将它定位在第二号存储 ...
2014-11-06 09:33 7 41548 推荐指数:
写在前面 一直很惧怕算法,总是感觉特别伤脑子,因此至今为止,几种基本的排序算法一直都不是很清楚,更别说时间复杂度、空间复杂度什么的了。 今天抽空理了一下,其实感觉还好,并没有那么可怕,虽然代码写出来还是磕磕绊绊,但是思想和原理还是大致上摸清楚了,记录、分享。 另一篇文章:三种非比较排序算法 ...
之前一篇文章常用的比较算法排序总结介绍了几种常用的比较排序算法,下面介绍的是几种非比较排序算法,分别是:计数排序、基数排序以及桶排序。 非比较排序算法内部引用的都是计数排序,当然你也可以将计数排序换为其他的比较排序算法。 计数排序 计数排序的步骤为: 遍历数组(A),借助一个辅助数组 ...
每天学习一点点 编程PDF电子书、视频教程免费下载:http://www.shitanlife.com/code 一直很惧怕算法,总是感觉特别伤脑子,因此至今为止,几种基本的排序算法一直都不是很清楚,更别说时间复杂度、空间复杂度什么的了。 今天抽空理了一下,其实感觉还好,并没有那么可怕 ...
排序算法可以说是一项基本功,解决实际问题中经常遇到,针对实际数据的特点选择合适的排序算法可以使程序获得更高的效率,有时候排序的稳定性还是实际问题中必须考虑的,这篇博客对常见的排序算法进行整理,包括:插入排序、选择排序、冒泡排序、快速排序、堆排序、归并排序、希尔排序、二叉树排序、计数 ...
排序算法可以说是一项基本功,解决实际问题中经常遇到,针对实际数据的特点选择合适的排序算法可以使程序获得更高的效率,有时候排序的稳定性还是实际问题中必须考虑的,这篇博客对常见的排序算法进行整理,包括:插入排序、选择排序、冒泡排序、快速排序、堆排序、归并排序、希尔排序、二叉树排序 ...
(一)快速排序 第一步:选择轴值,选择策略 第二步:将待排序序列划分为两个子序列L和R,使得L中的所有记录都小于等于轴值,而R中的所有记录都大于轴值,也就是关键的划分算法。 第三步:对子序列L和R递归快速排序。 (二)归并排序 二路归并: (三)堆排序 ...
1、冒泡排序不管序列是怎样,都是要比较n(n-1)/2 次的,最好、最坏、平均时间复杂度都为O(n²),需要一个临时变量用来交换数组内数据位置,所以空间复杂度为O(1)。 2、选择排序是冒泡排序的改进,同样选择排序无论序列是怎样的都是要比较n(n-1)/2次的,最好 ...
目录 计数排序 基数排序 桶排序 上一篇文章中我们总结了常用的比较排序算法,主要有冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。 这篇文章中我们来探讨一下常用的非比较排序算法:计数排序,基数排序,桶排序。在一定条件下,它们的时间复杂度 ...