一、前言
我们知道归并排序是一种高效的排序算法,在任何情况下时间复杂度都为O(nlogn)。但是,它需要用额外的内存空间来暂时储存归并过程中的元素,因此我们可以认为归并排序是以牺牲一部分内存空间为代价来获得时间的高效性。
相反,如果内存空间有限,我们就必须以牺牲时间为代价来保证空间不被过度使用。像上面所说的那样,在设计一个算法的过程中同时考虑时间复杂度和空间复杂度,并且在这两者中找到一个平衡点的过程我们把它称作时空权衡(time and space trade-off)。
在通常情况下,我们都认为时间更宝贵,而空间相对廉价。因此在大多数情况下,我们都是以牺牲空间的方式来减少运行时间。
计数排序(Counting Sort)是一个非基于比较的排序算法。而是通过计数的方式将时间复杂度降到了O(N)。
他快于任何比较排序算法。 当然这是一种牺牲空间换取时间的做法。它适用于范围较小的整数序列。
二、算法描述
按照从小到大排序的主要步骤:
第一步:找出原数组中元素值最大的,记为max,最小值记为 min。
第二步:创建一个新数组count,其长度是max - min + 1,其元