直接选择排序思路很简单,就是不停的拿当前假设的最小值与后面的元素对比,如果对比值更小,就交换位置。它需要经过N-1趟比较。
每轮都会将本轮最小值放在最前面,直至游标移动至最后一位。
package com.h3c.paixu; public class 直接排序Demo { public static void main(String[] args) { // 1. 初始化一个无序数组 int[] myArr = { 23, 35, 73, 27, 4, 77, 54, 84, 47, 56, 34, 32, 75, 32, 31, 0, 99, 7, 54, 57 }; for (int k = 0; k < myArr.length - 1; k++) { myArr = 直接排序(k, myArr); for (int i : myArr) { System.out.print(i + " "); } System.out.println(""); } } /** * 把最小的元素提前 * * @param startIndex * @param arr * @return */ public static int[] 直接排序(int startIndex, int[] arr) { // 临时交换的元素 int tempValue = arr[startIndex]; // 交换用的临时变量 for (int n = startIndex + 1; n < arr.length; n++) { if (arr[startIndex] > arr[n]) { arr[startIndex] = arr[n]; arr[n] = tempValue; tempValue = arr[startIndex]; } } return arr; } }