选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。
(上面是百度出来的,做一个简单的解释:从0索引开始,依次和后面元素比较,小的往前放,第一次比较完,最小值出现在最小索引处)
规则:
(1)第一次是从0索引开始和其他的进行比较
第二次是从1索引开始和其他的进行比较
......
(2)最后一次是数组长度-2的元素和数组长度-1的元素进行比较
详细代码实现:
public class SelectSort { public static void main(String[] args) { //定义一个数组 int[] arr = {24, 69, 80, 57, 13}; System.out.println("排序前..."); printArray(arr); //第一次 int x = 0; for (int y = 1; y < arr.length; y++) { if (arr[y] < arr[x]) { int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } } System.out.println("第一次比较后..."); printArray(arr); //第二次 (此时y初始值为2,我们发现y的初始值始终等于x+1) x = 1; for (int y = x + 1; y < arr.length; y++) { if (arr[y] < arr[x]) { int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } } System.out.println("第二次比较后..."); printArray(arr); //第三次 x = 2; for (int y = x + 1; y < arr.length; y++) { if (arr[y] < arr[x]) { int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } } System.out.println("第三次比较后..."); printArray(arr); //第四次 x = 3; for (int y = x + 1; y < arr.length; y++) { if (arr[y] < arr[x]) { int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } } System.out.println("第四次比较后..."); printArray(arr); System.out.println("选择排序..."); selectSort(arr); printArray(arr); } // 遍历功能 public static void printArray(int[] arr) { System.out.print("["); for (int x = 0; x < arr.length; x++) { if (x == arr.length - 1) { System.out.print(arr[x]); } else { System.out.print(arr[x] + ", "); } } System.out.println("]"); } //推算出选择排序算法 public static void selectSort(int[] arr) { for (int x = 0; x < arr.length - 1; x++) { for (int y = x + 1; y < arr.length; y++) { if (arr[y] < arr[x]) { int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } } } } }
打印结果: