选择排序算法代码实现
上代码:
package com.liu.pro; import java.util.Arrays; public class selectionSort { public static void main(String[] args) { int[] arr = {9,8,5,6,2,7,1,3,4}; sort(arr); System.out.println("选择排序:"); System.out.println(Arrays.toString(arr)); sort1(arr); System.out.println("选择排序优化:"); System.out.println(Arrays.toString(arr)); } /** * 选择排序 * @param arr 传入的数组 */ public static void sort(int[] arr){ // 遍历0~arr.length-2(包含) for (int i = 0; i < arr.length - 1; i++) { // 定义一个最小值的索引 int index = i; // 定义一个最小值并赋初始值 int min = arr[i]; // 遍历从j=i+1,到最后一个数 for (int j = i + 1; j < arr.length; j++) { // 如果找的数值比最小值还要小,替换这个最小值和最小值的索引 if (min > arr[j]){ min = arr[j]; index = j; } } // 给arr[i]赋值min // 给arr[index]赋值 arr[index] = arr[i]; arr[i] = min; } } /** * 选择排序优化 * @param arr 传入的数组 */ public static void sort1(int[] arr){ for (int i = 0; i < arr.length - 1; i++) { int index = i; int min = arr[i]; for (int j = i + 1; j < arr.length; j++) { if (min > arr[j]){ min = arr[j]; index = j; } } // 如果index != i 再进行更换,否则不需要进行更换 if(index != i){ arr[index] = arr[i]; arr[i] = min; } } } }
测试结果: