選擇排序是一種簡單直觀的排序演算法。
思路:
首先在原數列中找到最小(or最大)的元素,然後將其存放到陣列的起始位置。
再從剩餘未排序的元素中繼續尋找最小(or最大)的元素,然後放到已排序好的陣列的末尾。
以此類推,直到全陣列排序完成。
public
class
selectionsort
; system.out.
println
("原arr陣列:"
+ arrays.
tostring
(arr));
// 大迴圈控制迴圈次數
// 小迴圈查詢最小項
// 若與大迴圈次數序號不相等則交換位置
for(
int i =
0; i < arr.length -
1; i++)}
if(i != minindex )
} system.out.
print
("選擇排序後的arr:"
+ arrays.
tostring
(arr));
}}
執行結果:![](https://pic.w3help.cc/d91/90b06cafcba8fa36f5809ca6ffb4e.jpeg)
時間複雜度:
若被排序的數列中有n個數。遍歷一趟的時間複雜度是o(n),需要遍歷n-1次。因此,選擇排序的時間複雜度是o(n²)。
選擇排序的時間複雜度是o(n²)。
穩定性:穩定
演算法穩定性 – 假設在數列中存在a[i]=a[j],若在排序之前,a[i]在a[j]前面;並且排序之後,a[i]仍然在a[j]前面。則這個排序演算法是穩定的!
複習一 陣列(8) 桶排序
桶排序是鴿巢排序的一種歸納結果。當要被排序的陣列內的數值是均勻分配的時候,桶排序使用線性時間 n 但桶排序並不是 比較排序,他不受到 o n log n 下限的影響。思路 將所有待比較數值統一為同樣的數字長度,數字較短的數前面補零 依次將各個元素的最低位 次低位 最高位取出,分配到對應的桶中 一維陣...
複習一 陣列(6) 歸併排序
歸併排序是建立在歸併操作上的一種有效,穩定的排序演算法。該演算法是採用分治法的乙個非常典型的應用。歸併排序的實現由兩種方法 自上而下的遞迴 自下而上的迭代 思路 將這個陣列分成一半,直到每一部分 把左邊的陣列排序,右邊的陣列排序。當我們對左邊的陣列和右邊的素組進行排序的時候,再分別將左邊的陣列和右邊...
第十六周專案一 陣列排序(選擇法)
檔名稱 test.cpp 作 者 劉佳琦 完成日期 2014年 12 月 11日 版 本 號 v1.0 問題描述 選擇法陣列排序 輸入描述 無 程式輸出 排序後的陣列 include using namespace std void sort int p,int num 不要對自定義函式的宣告有任何...