- 算法思維:從 到
每次取一個為n-1
, 和i後面的元素進行比較i
- 令
如果發現比int k = i;
位置上的還小,則将該位置的角标指派給k。i
- 最後交換i 和 k的位置;每一趟都能排好一個最小的值。
package simpleAlgorithm;
/**
* @Author: WhaleFall541
* @Date: 2021/4/4 16:08
* 算法思維:從`0`到`n-1`每次取一個為`i`, 和i後面的元素進行比較
* 令`int k = i;`如果發現比`i`位置上的還小,則将該位置的角标指派給k。
* 最後交換i 和 k的位置;每一趟都能排好一個最小的值。
*/
public class SelectSort {
public static void main(String[] args) {
int[] arr = {-1111, 20, -3, -10, 100, -255};
selectSort(arr);
StringBuilder sb = new StringBuilder();
for (int i : arr)
sb.append(i).append(" ");
System.out.println("sb = " + sb);
}
//選擇排序
private static void selectSort(int[] arr) {
for (int i = 0; i < arr.length; i++) {
int k = i;// i是要排序的數下标
// 跟i下标後面的每個元素比較記錄下來arr[k]最小的k值
for (int j = i + 1; j < arr.length; j++) {
if (arr[k] > arr[j])
k = j;
}
// 最小的arr[k] 和 目前排序位置arr[i]互換
swap(arr, i, k);
}
}
private static void swap(int[] arr, int a, int b) {
int tmp = arr[a];
arr[a] = arr[b];
arr[b] = tmp;
}
}
轉載請注明 原文位址