选择排序

来源:互联网 发布:vpn代理软件破解版 编辑:程序博客网 时间:2024/05/21 16:55


//选择排序/* * 找到数组中最小的元素,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么就和它自己交换) * 在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置 * 如此往复,直到将整个数组排序 */package Algorithms;import java.util.Comparator;import edu.princeton.cs.algs4.Selection;import edu.princeton.cs.algs4.StdIn;import edu.princeton.cs.algs4.StdOut;public class P156_Selection {private P156_Selection(){}public static void sort(Comparable[] a){//将a[]按升序排列int n = a.length;for (int i = 0; i < n; i++){int min = i;for (int j = i + 1; j < n; j++){if (less(a[j], a[min])){min = j;}}exch(a, i, min);assert isSorted(a, 0, i);}assert isSorted(a);}public static void sort(Object[] a, Comparator comparator) {        int n = a.length;        for (int i = 0; i < n; i++) {            int min = i;            for (int j = i+1; j < n; j++) {                if (less(comparator, a[j], a[min])) min = j;            }            exch(a, i, min);            assert isSorted(a, comparator, 0, i);        }        assert isSorted(a, comparator);    }//比较v和w大小private static boolean less(Comparable v, Comparable w){return v.compareTo(w) < 0;}private static boolean less(Comparator comparator, Object v, Object w){return comparator.compare(v, w) < 0;}//交换a[i]和a[j]private static void exch(Object[] a, int  i, int j){Object swap = a[i];a[i] = a[j];a[j] = swap;}//确定是否排好序private static boolean isSorted(Comparable[] a){return isSorted(a, 0, a.length - 1);}private static boolean isSorted(Comparable[] a, int lo, int hi){for (int i = lo + 1; i <= hi; i++){if (less(a[i], a[i - 1])){return false;}}return true;}private static boolean isSorted(Object[] a, Comparator comparator){return isSorted(a, comparator, 0, a.length - 1);}private static boolean isSorted(Object[] a, Comparator comparator, int lo, int hi) {        for (int i = lo + 1; i <= hi; i++)            if (less(comparator, a[i], a[i-1])) return false;        return true;    }private static void show(Comparable[] a){for (int i = 0; i < a.length; i++){StdOut.println(a[i]);}}public static void main(String[] args) {// TODO Auto-generated method stubString[] a = StdIn.readAllStrings();P156_Selection.sort(a);show(a);}}

0 0
原创粉丝点击