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个数里有3个1,这样连续输出三个1,当遇到a[v] = t说明 有t个v......最后排序结束,
当如你会发现其实这个算法有限制条件,
比如这个数里不能有太大的数 当数大于100万时,我们是无法建立一个100万+的数组的.
当然数也不能小于0。
其实讲这个算法的目的就是告诉一些新手 我们平时n大的数组a[i] = m, 代表存下了m 反过来想a[m] =1 ; 其余的都是0 我们岂不也同样存下了m....