複習一 陣列(3) 選擇排序

2021-10-09 18:47:23 字數 1030 閱讀 9689

選擇排序是一種簡單直觀的排序演算法。

思路:

首先在原數列中找到最小(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));

}}

執行結果:

時間複雜度:

若被排序的數列中有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 不要對自定義函式的宣告有任何...