• 简单算法之选择排序(一)


    一、思路

    假设有8个数字未被排序。
    在8个未被排序的数字中找到最小数字,将其与未排序数字中的第一个数进行位置交换,最小数字已排序,剩余7个数字未被排序。依此类推。
    

    二、案例分析

    待排序数据:8 6 2 3 1 5 7 4
    第一轮排序:
        找到1是未排序数据中最小数字,与数字8位置交换,得到如下结果:
        1 6 2 3 8 5 7 4
        数字1排序,剩余7个数字未被排序
    第二轮排序:
        找到2是未排序数据中最小数字,与数字6位置交换,得到如下结果:
        1 2 6 3 8 5 7 4
        数字1,2排序,剩余6个数字未被排序
    ......
    

    三、编码

    public class SelectionSort {
    
    	// 我们的算法类不允许产生任何实例
    	private SelectionSort() {
    	}
    
    	public static void sort(int[] arr) {
    
    		int n = arr.length;
    		for (int i = 0; i < n; i++) {
    			// 寻找[i, n)区间里的最小值的索引
    			int minIndex = i;
    			for (int j = i + 1; j < n; j++) {
    				if (arr[j] < arr[minIndex]) {
    					minIndex = j;
    				}
    			}
    			swap(arr, i, minIndex);
    		}
    	}
    
    	private static void swap(int[] arr, int i, int j) {
    		int t = arr[i];
    		arr[i] = arr[j];
    		arr[j] = t;
    	}
    
    	public static void main(String[] args) {
    
    		int[] arr = { 5, 4, 1, 6, 2, 3, 7, 8 };
    		SelectionSort.sort(arr);
    		for (int i = 0; i < arr.length; i++) {
    			System.out.print(arr[i]);
    			System.out.print(' ');
    		}
    		System.out.println();
    	}
    }
    
  • 相关阅读:
    python中神之bug
    常用好的软件
    远程登录
    centos7改静态ip
    SpringMVC归纳
    mysql数据库操作手册
    MyBatis归纳
    Maven归纳
    maven操作手册
    java知识库
  • 原文地址:https://www.cnblogs.com/moonlightL/p/7398530.html
Copyright © 2020-2023  润新知