java算法-选择排序

Posted ghostwu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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] + "	" );
        }
        System.out.println();
    }
}

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

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

执行结果:

[email protected]:~/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

 

以上是关于java算法-选择排序的主要内容,如果未能解决你的问题,请参考以下文章

排序算法之冒泡选择插入排序(Java)

7种基本排序算法的Java实现

Java数据结构—排序算法

Java最简单选择排序算法

Java 选择排序算法

Java 选择排序算法