選擇排序是一種簡單直觀的排序演算法,無論什麼資料進去都是 o(n²) 的時間複雜度。所以用到它的時候,資料規模越小越好。唯一的好處可能就是不占用額外的記憶體空間了吧。
宣告**於菜鳥教程
public
class
test
;print
("原陣列: "
, arr)
;selectionsort
(arr)
;print
("排序後的陣列: "
, arr);}
private
static
void
selectionsort
(int
arr)}if
(i != min)}}
private
static
void
print
(string str,
int[
] arr)
else
if(i == arr.length -1)
else
} system.out.
println();}}
選擇排序很明顯的乙個特點就是和氣泡排序一樣,都是雙層迴圈。第一層迴圈就是負責拿到每乙個元素,第二層迴圈則使用第一層迴圈的資料,不斷的進行比對,找到最小的元素,然後和第一層迴圈拿到的元素進行交換。演算法過程中比對的資料集也是在不斷變小。
o(n^2)
缺點:時間複雜度太高,效率慢;最關鍵的是不穩定(舉個例子:8, 3, 6, 9, 1, 5, 11, 4, 2,這裡面的資料假如我第一次選擇,8和1的位置會互換,這個時候,8就到了9的後面。
優點:一輪比較只需要換一次位置;
很多人對冒泡和選擇這種演算法很難分清,卻是從實現和基本的過程,資料集都差不了多少。
十大經典排序演算法之 選擇排序
選擇排序的工作原理簡單直觀,和氣泡排序也有異曲同工之處,它將需要排序的陣列分為有序區和無序區,首先在無序區選出最小的數,放到有序區的末尾 有序區為從小到大排序好的陣列,因此此時從無序區選出的最小的數一定大於有序區中最大的數 以此類推,直到陣列有序。時間複雜度 平均 時間複雜度 最壞 時間複雜度 最好...
十大經典排序演算法
載自 排序演算法是 資料結構與演算法 中最基本的演算法之一。排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序演算法有 插入排序 希爾排序 選擇排序 氣泡排序 歸併排序 快速排...
十大經典排序演算法
不穩定排序種類為4種 快速排序 核心思想是partition操作 二分法分而治之 平均時間複雜度nlogn 希爾排序 高階版的插入排序,先把間隔較遠的子串行排序,最後間隔為1時,等同於插入排序 插入排序在序列有序時,時間複雜度常數級,所以先讓子串行總體有序,能有效降低時間複雜度 平均時間複雜度n 1...