java算法-選擇排序

 選擇排序算法特色: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( "排序以後:" );
    }
}

執行結果:dom

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
相關文章
相關標籤/搜索