排序-----选择排序(java)

一:什么是选择排序

    最简单的排序算法,首先从数组中找到最小的值,将其与第一个元素交换位置(如果第一个元素是最小元素则与自己交换)。在剩下的元素中找到最小的元素,与第二个元素进行交换。依次往复,直到整个数组排序结束。    

二:排序流程

    

        每一趟排序我们都会确定一个最小的值,并将其放置在第i个位置上,排序只需要执行a.length-1次,因为第a.length次只剩下一个元素,无需进行比较。

    选择排序比较容易理解和实现,有鲜明的特定:

    1、运行时间和输入无关。

        无论数组的输入状态如何,有序、无序或者主键全部相等,排序所花费的时间相同。

    2、数据移动是最少的

          整个排序结束只需要进行N次交换,与其它排序算法比较移动的次数最小。

三:代码实现

public class SelectSort {
    public static void main(String args[]){
        int a[] = {10,23,5,2,112,34,22,99,0,45,1};
        sort(a);
        show(a);
    }
    private static void show(int[] a) {
        System.out.println("排序的结果");
        for(int i=0;i<a.length;i++){
            System.out.print(a[i]+" ");
        }
    }
    public static void sort(int[] a){
        for(int i=0;i<a.length-1;i++){
            int min = i;
            for(int j=i+1;j<a.length;j++){
                if(less(a,j,min)){
                    min = j;
                }
            }
            exch(a,i,min);
        }
    }
    /**数据交换*/
    private static void exch(int[] a, int i, int min) {
        int temp = a[i];
        a[i] = a[min] ;
        a[min] = temp;
    }
    /**数据比较*/
    private static boolean less(int[] a, int j, int min) {
        if(a[j] > a[min]){
            return false;
        }else{
            return true;
        }
    }
}

排序结果:

    

猜你喜欢

转载自blog.csdn.net/jz_say/article/details/80086168