各种排序算法总结已经介绍了几种能在O(n*log(n))时间内培训n个数的算法。归并排序和堆排序达到了最坏情况下的上界;快速排序在平均情况下达到该上界。这些算法都有一个有趣的性质:在排序的最终结果中,各元素的次序依赖于它们之间的比较。这类算法为比较算法,还有一类算法是线性时间复杂度的排序算法,有计数 ...
分类:
编程语言 时间:
2016-06-19 15:33:42
阅读次数:
181
计数排序:最差运行时间复杂度:,平均:,k是数字范围区间长度,n是数组长度。 这是一种稳定的线性时间排序 如果要排序的内容已知其范围,比如要排序的所有数字都是1~100之间的数(使用计数排序是最好的选择) KEY-IDEA:由于计数的范围已经确定,因此,可以开辟一个额外的空间来记录所有数字出现的次数 ...
分类:
编程语言 时间:
2016-06-05 18:56:32
阅读次数:
263
面试中经常碰到排序算法的问题,所以这里把常用的几种排序总结一下 线性时间排序 计数排序:首先统计每个数的个数,然后直接得出有序的序列。时间复杂度O(n + k),空间复杂度O(k),k表示数组中最大的数 不稳定 基数排序:从最低位开始,先按照该位的大小排序,然后按照次低位的大小排序.......最后 ...
分类:
编程语言 时间:
2016-04-21 23:39:42
阅读次数:
318
排序即将一个无序的数组(序列)按照一定的规则排列,常见的规则便是按照从大到小或者从小到大的顺序。本文讨论的排序一律指按照从小到大的顺序进行排列的这种情况。 本文将分为上下两章介绍以下六种排序算法: (1)直接选择排序 (2)冒泡排序 (3)快速排序 (4)二分排序 (5)堆排序 (6)线性时间排序。 ...
分类:
编程语言 时间:
2016-03-31 23:25:04
阅读次数:
154
比较排序:各元素的次序依赖于它们之间的比较{插入排序O(n**2) 归并排序O(nlgn) 堆排序O(nlgn)快速排序O(n**2)平均O(nlgn)} 本章主要介绍几个线性时间排序:(运算排序非比较排序)计数排序O(k+n)基数排序O() 第一节:用决策树分析比较排序的下界 决策树:倒数第二层满...
分类:
编程语言 时间:
2016-02-05 18:30:58
阅读次数:
229
算法分析与设计复习2016年初,研一上学期期末考试前,复习并总结算法分析与设计科目的内容。复习过程参照《算法导论》中文第2版,同时参照PPT,章节划分根据PPT内容概要:第一章 概述第二章 插入排序&分治策略第三章 复杂度分析第四章 堆与堆排序第五章 快速排序第六章 线性时间排序第一章 概述算法的应...
分类:
编程语言 时间:
2016-01-09 23:05:22
阅读次数:
647
在最坏情况下,任何比较排序算法都需要做O(nlgn)次比较。然而,在指定的条件下,线性时间的排序算法可以使得排序在O(n)时间内完成。计数排序 假设n个输入元素中的每一个都是0到k区间内的一个整数,其中k为某个整数。k=O(n)时,排序运行时间为O(n)。主要思想: 创建长度为k的数组C,将对应.....
分类:
编程语言 时间:
2015-12-15 01:01:37
阅读次数:
193
一、线性时间排序算法历史概览 计数排序首先是由 Harold H. Seward 于1954年提出,而且他还提出将计数排序和基数排序进行结合的思想;基数排序是L.J.Comrie于1929年首次在一篇描述卡片穿孔机文档中提出的一种方法,它是从最低有效位开始,对一个有多位数组成的数进行排序的方法;而桶...
分类:
编程语言 时间:
2015-09-29 14:29:24
阅读次数:
374
时间复杂度(渐近时间复杂度的严格定义,NP问题,时间复杂度的分析方法,主定理)排序算法(平方排序算法的应用,Shell排序,快速排序,归并排序,时间复杂度下界,三种线性时间排序,外部排序)数论(整除,集合论,关系,素数,进位制,辗转相除,扩展的辗转相除,同余运算,解线性同余方程,中国剩余定理)指针(...
分类:
其他好文 时间:
2015-09-01 21:16:57
阅读次数:
241
用三种特化模板写七种排序算法,包括四种比较算法,三种线性时间排序算法
分类:
编程语言 时间:
2015-06-20 00:13:05
阅读次数:
175