選擇排序簡單實現和複雜度估計

2021-08-17 03:46:39 字數 1185 閱讀 3807

1.每一次從待排序的資料元素中選出最小(或最大)的乙個元素,存放在 序列的起始位置,直到全部待排序的資料元素排完。

public class selectionsort ;

/**@param arr 將陣列型別改為comparable,使其適應更多資料型別,類似c++中的模板函式

*/public static void sort(comparable arr)

/*** 設定隨機randmo 數 組

* @param count 陣列大小

* @param arrl 上區間

* @param arrr 下區間

* @return

*/public static integer getrandomarray(int count,int arrl,int arrr)else

}/*輸出陣列結果方法*/

public static void printarray(integer arr,int count)

/*測試排序方法*/

public static void testsort(string sortclassname,comparable arr));

object o = new object;

double starttime = system.currenttimemillis();

method.invoke(null,o);

double endtime = system.currenttimemillis();

assert issorted(arr);

system.out.println("sort time : "+(endtime-starttime)/1000+" s");

} catch (exception e)

}}

結果:

sort time : 0.314 s

為什麼說選擇排序的時間複雜度為n^2,我們可以通過testsort方法來驗證一下

public static void main(string args)
結果:

sort time : 0.132 s

sort time : 14.05 s

由此我們可以發現,二者用時相差將近100倍,但二者陣列長度相差才為10倍,可見時間跟空間關係為n^2。

排序演算法 時間複雜度和空間複雜度

常數階o 1 無論 執行了多少行,只要沒有迴圈複雜結構,那麼這個的時間複雜度就是o 1 o 1 時間複雜度 沒有迴圈結構的順序執行,無論執行多少行,時間複雜度均為o 1 public static voido1 對數階o log2n o log2n 時間複雜度 此處 i 以二倍的速度增長,也就是說到...

時間複雜度和空間複雜度的簡單講解

時間複雜度和空間複雜度的簡單講解 乙個演算法的優劣主要從演算法的執行時間和所需要占用的儲存空間兩個方面衡量。文章最後,舉例使用二分查詢和斐波那契的遞迴和迭代方法,分別說明時間和空間複雜度。時間複雜度 首先要說的是,時間複雜度的計算並不是計算程式具體執行的時間,而是演算法執行語句的次數。當我們面前有多...

排序演算法的 時間複雜度 和 空間複雜度

常用的排序演算法的時間複雜度和空間複雜度 排序法 最差時間分析 平均時間複雜度 穩定度 空間複雜度 氣泡排序 o n2 o n2 穩定 o 1 快速排序 o n2 o n log2n 不穩定 o log2n o n 選擇排序 o n2 o n2 穩定 o 1 二叉樹排序 o n2 o n log2n...