选择排序算法思路(以从小到大排序为例):
首先找到序列中最小的值,放到第一位;然后找出第一位之后序列(不包括第一位)中最小的值,放到第二位;然后找出第二位之后序列(不包括前两位)中最小的值,放到第三位……以此类推,直至排列完成。可参考下图(该图来源于慕课网“程序猿的内功修炼,学好算法与数据结构”课程)。
示例代码:
public class SelectionSort {
/**
* 选择排序法
*
* @param arr
* @param n
*/
static int[] selectionSort(int arr[], int n) {
for (int i = 0; i < n; i++) {
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
return arr;
}
public static void main(String[] args) {
int[] arr = { 5, 4, 7, 9, 8, 10, 3, 2, 1, 6 };
arr = selectionSort(arr, 10);
String result = "";
for (int i = 0; i < 10; i++) {
result += arr[i] + " ";
}
System.out.println(result);
}
}
输出结果:
1 2 3 4 5 6 7 8 9 10