3.排序之选择排序

问题描述

  • 对数组进行选择排序
  • 对数组进行升序排序
  • 对数组进行降序排序

计算方式

  • 先比较出一个最值放到最右边或最左边
  • 如首先留最左边的值为最值A(0),直接比较除这个值外的所有值,找出一个最值,再比较A(0),和最值的大小,把比较出来的最后最值,放到A(0)位置
  • 同样方法比较A(1),A(2)....
  • 此方法,不要频烦的去交换数组元素的值

源码

package com.opensourceteams.modeles.common.gramar.数组;

/**
 * 开发者:刘文  Email:[email protected]
 * 16/2/25  下午9:58
 * 功能描述:选择排序
 * 数组选择排序升序
 * 数组选择排序降序
 */

public class ArraySortSelect {


    /**
     *
     * @param args
     */
    public static void main(String[] args) {
        int[] array = {3,9,5,5,10,1};
        println(arraySortSelectAsc(array));
        println("============");
        println(arraySortSelectDesc(array));
    }

    /**
     * 数组选择排序升序
     * @param array
     * @return
     */
    public static int[] arraySortSelectDesc(int[] array){

        if(array == null || array.length == 0){
            System.out.println("直接退出了");
            return array;
        }

        int temp = array[0];
        int index = 0 ;
        for(int i = 0 ; i < array.length ; i++){
            temp = array[i];
            index = i;
            for(int j = i + 1 ; j < array.length;j++){
                    if(array[j] > temp){
                        temp = array[j];
                        index = j;
                    }
            }

            if(temp > array[i] ){
                array[index] = array[i];
                array[i] = temp;
            }

        }

        return array;
    }

    /**
     * 数组选择排序降序
     * @param array
     * @return
     */
    public static int[] arraySortSelectAsc(int[] array){

        if(array == null || array.length == 0){
            System.out.println("直接退出了");
            return array;
        }

        int temp = array[0];
        int index = 0 ;
        for(int i = 0 ; i < array.length ; i++){
            temp = array[i];
            index = i;
            for(int j = i + 1 ; j < array.length;j++){
                if(array[j] < temp){
                    temp = array[j];
                    index = j;
                }
            }

            if(temp < array[i] ){
                array[index] = array[i];
                array[i] = temp;
            }

        }

        return array;
    }
    /**
     * 打印数组
     * @param array
     */
    public static void println(int[] array){
        for(int i = 0 ; i < array.length  ; i++){
            System.out.println(array[i]);
        }
    };

    /**
     * 打印对象
     * @param obj
     */
    public static void println(Object obj){
        System.out.println(obj.toString());
    };
}