/**
* 選擇排序
* 最好最壞時間複雜度:n^2
*/public
class
selectsort
;//預設最小值
int min =0;
//記錄最小值下標
int minindex =0;
for(
int i =
0; i < arr.length -
1; i++)}
//發現最小值改變才進行交換
if(min != arr[i]
) system.out.
println
(arrays.
tostring
(arr));
}}}
該排序演算法不論什麼資料進去,都需要進行兩次for迴圈的比較,所以它的最好、最壞和平均時間複雜度都是o(n^2)
交換位置也是通過同一工具人記憶體進行交換,所有空間複雜度是o(1)
選擇排序是不穩定的,例如,排序時第乙個5會和2進行交換,從而破壞穩定性
排序發生在記憶體中,所以排序方式是內排序
排序演算法2 選擇排序
選擇排序 selection sort 通過多次比較和交換來實現排序,其排序流程如下 1.選取陣列中最小的乙個元素和陣列的第乙個元素交換。2.接著從剩下的所有元素中選擇最小的與第二個元素交換。3.和第二步同樣的方法對剩下的所有元素進行排序,最後便可得到按照從大到小的順序排好陣列中的各元素。具體過程如...
排序演算法 2 選擇排序
簡單選擇排序是一種選擇排序。選擇排序 每趟從待排序的記錄中選出關鍵字最小的記錄,順序放在已排序的記錄序列末尾,直到全部排序結束為止。簡單排序很簡單,它的大致處理流程為 動態效果示意圖 舉例說明,處理過程示意圖如下所示 如圖所示,每趟排序中,將當前第i小的元素放在位置i上。c include incl...
排序演算法(2) 選擇排序 堆排序
繼續上篇的 交換排序 氣泡排序 快速排序,本篇介紹選擇排序和堆排序 一 選擇排序 非常的簡單直觀,每次找出最小或者最大的值儲存起來,繼續找剩下的值儲存起來,直達最後乙個元素。從arr 0 arr n 中找出最小的值,放在arr 0 此時arr 0 已經排好序 從arr 1 arr n 中找出最小的值...