提要:对于排序,有很多方法,一项快速排序法的速度是O(nlogn)到O(n^2). 那么就是说,如果考虑了2次(当然了.元素数量是要多点的)以上的查找.是需要排序的.
问题一:如果是一个复杂的无序数列,搜索一个目标数时,有两种寻找方式 1.先排序然后再搜索。2.不排序直接搜索。这两种方式那种比较快。哪种算法效率比较高。
解答:如果搜索一个目标一次,那么是2的快,效率是2的高,因为2的时间复杂度只有O(n),而1需要排序加上查找.我也说了,排序所用时间肯定比O(n)大的
问题二:如果是一个复杂的无序数列,要搜索多个目标值。也就是要做多次搜索。那么也是两种寻找方式 1.先排序然后再搜索。2.不排序直接搜索。这两种方式在多次搜索,和一次搜索是不是一样的呢???哪种效力高?
解答:多个目标.比如x个,就要搜索x次,时间复杂度是O(n)*x.如果x=n呢?就是n方了.
如果用快速排序法,加上折半查找,那么所用时间复杂度是 O(n^2)+x*log2(n) 当然是比1快很多
上述如有错误,请指点. |