3.排序之冒泡排序

问题描述

  • 对数组进行冒泡排序
  • 对数组进行升序排序
  • 对数组进行降序排序

计算方式

  • 循环比较每相邻数组的两个元素,把最值放最前边或最后边,从头到尾只要把每一个元素都比较一遍,就可以找到一个最值
  • 那只要除最值以外的所有元素继续比较一遍,就又找出一个最值
  • 依此类推就可以找出所有的最值
  • 当然,在找最值时,会把符合条件的元素进行值交换

源码

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

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

public class ArraySortBubble {

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

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

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

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

        }

        return array;
    }

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

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

        int temp = array[0];
        for(int i = 0 ; i < array.length ; i++){
            for(int j = 0 ; j < array.length -1 - i;j++){
                if(array[j] < array[j+1]){
                    temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = 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());
    };

}