簡單選擇排序(Simple Selection Sort)
就是通過n-i次關鍵字的比較,從n-i+1個記錄中選出關鍵字最小的記錄,并和第i(1<=i<=n)個記錄交換之
時間復雜度:
1) 最好情況:本身有序,需要比較n-1次 時間復雜度為o(n)
2)最壞情況:逆序情況,需要比較(n-1)+(n-2)+…+2+1=n(n-1)/2 時間復雜度為o(n2)
性能上略優于冒泡排序 減少了交換次數
static void selectionSort(int[] array) {
if (array != null && array.length > 0) {
int i, j,min;
for (i = 0; i < array.length; i++) {
min=i;
for (j = i + 1; j < array.length; j++) {
if (array[min] > array[j]) {
min=j;//找出最小記錄
}
}
if(i!=min){//如果最小記錄位置有變化,執行交換
swap(array, i, min);
}
}
}
}```
/**
- 將數組的2個位置交換
*/
static void swap(int[] array, int i, int j) {
if (array != null && array.length > 0) {
if (i >= 0 && j >= 0 && i <= array.length && j <= array.length) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}```