一种复杂度的为O(n)的排序方法

来源:互联网 发布:多益网络手游新游戏 编辑:程序博客网 时间:2024/05/22 00:29

1. 有一种算法却不用比较,而他的时间复杂度是O(n),那就是计数排序,这个算法的思路是这个样子的,

如果由小到大排序,首先建立一个足够大的数组a[INF];把数组清0,当输入一个数m的时候 那么执行a[m]++;  

这样a[m]就是1了 如果再有同一个数等于m那么就是a[m]=2......最后输入n个数之后,我们从a[0]开始 如果a[0]等于0那么相当于n个数里没有0  接着往后走,等到了a[1]  发现a[1]3  说明这个n个数里有31,这样连续输出三个1,当遇到a[v] = t说明 有tv......最后排序结束,


当如你会发现其实这个算法有限制条件,

比如这个数里不能有太大的数 当数大于100万时,我们是无法建立一个100+的数组的

当然数也不能小于0。


其实讲这个算法的目的就是告诉一些新手 我们平时n大的数组a[i] = m,代表存下了m  反过来想a[m] =1 ;其余的都是0我们岂不也同样存下了m....


0 0
原创粉丝点击