常見的算法 5000個數(shù)中找出10個最大的,用哪種排序算法比較好?
5000個數(shù)中找出10個最大的,用哪種排序算法比較好?該問題的最優(yōu)時間復雜度為O(n)。所以如果一定要使用排序算法,如果標題條件允許,請盡量選擇o(n)排序算法如bucket排序。另一種解決方案是構(gòu)建
5000個數(shù)中找出10個最大的,用哪種排序算法比較好?
該問題的最優(yōu)時間復雜度為O(n)。所以如果一定要使用排序算法,如果標題條件允許,請盡量選擇o(n)排序算法如bucket排序。另一種解決方案是構(gòu)建一個大小為10的堆,按順序遍歷數(shù)組,并在堆滿時移除最上面的元素。這樣,最多可獲得10個元素。時間復雜度為O(nlog10)。
各種排序算法的復雜度?
快速排序的時間復雜度是nlogn(基于2的n×log的對數(shù))的擴展:快速排序是冒泡排序的改進??焖倥判蚴怯蒀.A.R.Hoare在1962年提出的。它的基本思想是用一步排序法將要排序的數(shù)據(jù)分成兩個獨立的部分,其中一部分的數(shù)據(jù)比另一部分的數(shù)據(jù)小。然后根據(jù)該方法對兩部分數(shù)據(jù)進行快速排序,整個排序過程可以遞歸進行,從而使整個數(shù)據(jù)成為一個有序的序列。各種排序方法的時間復雜度如下: