排序的算法,时间复杂度不可能达到O(n),最快是O(logN)或者O(fun(n)),fun(n)>n;
原因如下:
1.时间是O(n)意味着只遍历一遍,在任何时候都不往回遍历,遍历一遍的限制太严格,如下例:
比如序列:a b c d e;在看到第四个元素d时,不能往回去比较d是处在a b c中大小位置【这句话明白?就是,假设abc是排过序的,不知道d要放在哪儿,是dabc还是abdc】,这样的条件,是排不了序的。
从这里也能看出,排序算法的好坏,关键在于“算出d在abc中位置的效率”,现在流行的“二叉树排序”好就好在,之前建立的二叉树很容易就能找出d在abc中的位置【这是效率高到logN的关键!!】
2.排序是现代非常重要的基础算法,如果有O(n)的算法,不可能不推广的,这可是件大事!!!!!!