选择排序 -JAVA详解

来源:互联网 发布:航线保持算法 编辑:程序博客网 时间:2024/06/14 01:01
/** * 选择排序是一种简单的排序算法,原理是把待排序数组分为已排序好和未排序两个,开始先从数组中找到一个最小(最大)元素, * 放在数组的开始位置作为已排序好数组,假设是第一个元素,然后跟后边元素去比较,小则更新,内部循环结束后去如果更新过了去交换值 * * 和冒泡排序的区别,冒泡排序会依次比较交换相邻不合法元素,而选择排序每次遍历都是记录了最小(最大)元素的位置,最后只做一次交换即可 * * 时间复杂度O(n^2) * * @author yanhom */public class SelectionSort {    /**     * 注意点:两个循环数组下标,避免越界     *     * @param arr     */    public static void sort(int[] arr) {        int len = arr.length;        for(int i = 0; i < len - 1; i++) {  //已排序数组下标变化            int min = i; //记录最小(最大)元素            for (int j = i+1; j < len; j++) { //未排序数组下标变化                if(arr[j] < arr[min]) {                    min = j;  //更新值                }            }            if(min != i) {                swap(arr, i, min);  //交换元素            }        }    }    private static void swap(int[] arr, int i, int j) {        int temp = arr[i];        arr[i] = arr[j];        arr[j] = temp;    }    public static void main(String[] args) {        int[] arr = {2,3,1,4,4,0,6,7,4,6,8,9};        sort(arr);        for(int i =0; i < arr.length; i++) {            System.out.println(arr[i]);        }    }}

原创粉丝点击