排序——选择排序

来源:互联网 发布:安卓福利软件 编辑:程序博客网 时间:2024/06/09 22:49
public class Selection {    public static void sort(Comparable[] a){        for(int i = 0; i< a.length;i++){            int min = i;            for(int j = i + 1;j<a.length;j++){                if(less(a[j],a[min])) min = j;            }            echo(a,i,min);        }    }    public static boolean less(Comparable v,Comparable w){        return v.compareTo(w) < 0;    }    public static void echo(Comparable[] a,int i,int j){        Comparable t = a[i];        a[i] = a[j];        a[j] = t;    }    public static void show(Comparable[] a){        for(int i = 0; i < a.length;i++ ){            System.out.print(a[i] + " ");        }    }    public static boolean isSorted(Comparable[] a){        for(int i = 1; i < a.length;i++){            if(less(a[i],a[i-1])) return false;        }        return true;    }    public static Comparable[] Random(int num){        Integer[] a = new Integer[num];        Random rand = new Random();        for(int i = 0;i<num;i++){            a[i] =  rand.nextInt(10000);        }        return a;    }    public static void main(String[] args) {        Comparable[] a = Selection.Random(200000);        Long start = System.currentTimeMillis();        sort(a);        Long end = System.currentTimeMillis();        System.out.println("Time is " + (end - start));        /*show(a);*/    }}

思路:遍历数组,找到最小的元素,和第一个进行交换,接下来在剩下的元素中找到最小的数组,和第二个进行交换,以此类推。
关键是每次选择最小值。

0 0