码迷,mamicode.com
首页 > 编程语言 > 详细

冒泡排序

时间:2016-12-24 13:41:39      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:oid   i++   倒数   out   system   ble   ack   boolean   pre   

package com.sort;

public class BubbleSort {
    
    public static void swap(int list[], int i, int j){
        int temp;
        temp = list[i];
        list[i] = list[j];
        list[j] = temp;
        
    }
    public static void print(int list[]){
        for(int i=0;i<list.length;i++){
            System.out.println(list[i]);
        }
    }
    public static void sort01(int list[]){
        /**
         * 从前往后冒泡
         * 第1次循环(从0到9)找到最大的数放在最后一个位置(9)
         * 第2次循环(从0到8)找到第2大的数放在倒数第2的位置(8)
         * 第3次循环(从0到7)找到第2大的数放在倒数第2的位置(7)
         * 依次类推...
         * */
        for(int i=0;i<list.length-1;i++){
            for(int j=0;j<list.length-i-1;j++){
                if(list[j] > list[j+1]){
                    swap(list,j,j+1);
                }
            }
        }
    }
    
    public static void sort02(int list[]){
        /**
         * 从后往前冒泡
         * 第1次循环(从9到0)找到最小的数放在第1个位置(0)
         * 第2次循环(从9到1)找到第2小的数放在第2的位置(1)
         * 第3次循环(从9到2)找到第3小的数放在第3的位置(2)
         * 依次类推...
         * */
        
        for(int i=0;i<list.length-1;i++){
            for(int j=list.length-1-1;j>=i;j--){
                if(list[j] > list[j+1]){
                    swap(list,j,j+1);
                }
            }
        }
    }
    
    
    public static void sort03(int list[]){
        
        /**
         * 冒泡的优化
         * [2,1,3,4,5,6,7,8,9]
         * 如果序列是这样的
         * 刚开始flag=true
         * 进入循环flag=false
         * 第1次循环,flag=true,说明这次循环有数据进行了交换
         * 循环后结果:[1,2,3,4,5,6,7,8,9]
         * 进入第2次循环,flag=false,循环结束后没有进行数据交换,说明后者都大于前者,flag还是false
         * 所以就不用再进行循环了,已经排好序了
         * 
         * */
        
        boolean flag = true;
        for(int i=0;i<list.length-1 && flag;i++){
            flag = false;
            for(int j=list.length-2;j>=i;j--){
                if(list[j] > list[j+1]){
                    swap(list,j,j+1);
                    flag = true;
                }
            }
        }
        
    }
    public static void main(String[] args) {
        
        int list0[] = new int[]{3,2,5,6,4,8,7,9,0,1};
//        int list1[] = new int[]{9,8,7,6,5,4,3,2,1,0};
//        int list2[] = new int[]{2,1,3,4,5,6,7,8,9};
        sort01(list0);
//        sort02(list0);
//        sort03(list0);
        print(list0);
        
    }

}

 

冒泡排序

标签:oid   i++   倒数   out   system   ble   ack   boolean   pre   

原文地址:http://www.cnblogs.com/wwzyy/p/6216968.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!