java算法-选择排序

 选择排序算法特点:

>每一轮找出一个最小值或者最大值,依次放在最前面的位置。在查找的过程中,用当前假定的最小值或者最大值,去跟后面所有的值进行比较。如果小或者大,就把下标给那个假定的值。一轮循环完了之后,再次判断,那个当初假定的最小或者最大,是否在一轮比较之后,发生过变化,如果变化了,那假定的值就不是那一轮比较的最小或者最大,就要进行交换。相比冒泡排序,他在空间上有优势,不需要频繁的交换。

package com.ghostwu;
import java.util.Random;

class MySelectSort {
    private int[] arr;
    public MySelectSort(){
        arr = new int[10];
        Random rand = new Random();
        for( int i = 0; i < arr.length; i++ ){
            arr[i] = rand.nextInt( 101 );
        }
    }
    public void sort(){
        int min;
        for( int i = 0; i < arr.length; i++ ){
            min = i;
            for( int j = i + 1; j < arr.length; j++ ){
                if( arr[min] > arr[j] ) {
                    min = j;
                }
            }
            if( min != i ) {
                    int tmp = arr[min];
                    arr[min] = arr[i];
                    arr[i] = tmp;
            }
            display( "第" + ( i + 1 ) + "轮的比较结果: " );
        }
    }
    public void display( String info ){
        System.out.println( info );
        for( int i = 0; i < arr.length; i++ ){
            System.out.print( arr[i] + "\t" );
        }
        System.out.println();
    }
}

public class SelectSort{
    public static void main( String[] args ){

        MySelectSort ss = new MySelectSort();
        ss.display( "排序之前:" );
        ss.sort();
        ss.display( "排序之后:" );
    }
}

执行结果:

ghostwu@dev:~/java/data_struct/sort$ java com.ghostwu.SelectSort 
排序之前:
83    18    39    98    17    68    77    68    65    2    
第1轮的比较结果: 
2    18    39    98    17    68    77    68    65    83    
第2轮的比较结果: 
2    17    39    98    18    68    77    68    65    83    
第3轮的比较结果: 
2    17    18    98    39    68    77    68    65    83    
第4轮的比较结果: 
2    17    18    39    98    68    77    68    65    83    
第5轮的比较结果: 
2    17    18    39    65    68    77    68    98    83    
第6轮的比较结果: 
2    17    18    39    65    68    77    68    98    83    
第7轮的比较结果: 
2    17    18    39    65    68    68    77    98    83    
第8轮的比较结果: 
2    17    18    39    65    68    68    77    98    83    
第9轮的比较结果: 
2    17    18    39    65    68    68    77    83    98    
第10轮的比较结果: 
2    17    18    39    65    68    68    77    83    98    
排序之后:
2    17    18    39    65    68    68    77    83    98

猜你喜欢

转载自www.cnblogs.com/ghostwu/p/9278177.html