冒泡排序

来源:互联网 发布:2017前景行业知乎 编辑:程序博客网 时间:2024/06/08 16:55

冒泡排序
原理
冒泡排序算法的运作如下:(从后往前)
1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3. 针对所有的元素重复以上的步骤,除了最后一个。
4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
Java实现如下:

import java.util.Random;public class Main {    private static int N = 10;    static Random rand = new Random();    public static void main(String[] args) {        // TODO Auto-generated method stub        test_Bubble_ASC();        test_Bubble_DES();    }    private static void test_Bubble_ASC() {        int[] A = new int[N];        for (int i = 0; i < N; i++) {            A[i] = rand.nextInt(1000);        }        System.out.println("排序前:");        print(A);        Bubble_Sort_ASC(A);        System.out.println("排序后(升序):");        print(A);    }    private static void test_Bubble_DES() {        int[] A = new int[N];        for (int i = 0; i < N; i++) {            A[i] = rand.nextInt(1000);        }        System.out.println("排序前:");        print(A);        Bubble_Sort_DES(A);        System.out.println("排序后(降序):");        print(A);    }    private static void Bubble_Sort_ASC(int[] A) {        // TODO Auto-generated method stub        int length = A.length;        boolean b=false;        for(int i=length-1;i>0;i--){            for(int j=0;j<i;j++){                if(A[j]>A[j+1])                {                    int temp = A[j];                    A[j]=A[j+1];                    A[j+1]=temp;                    b=true;                }            }            if(b==false)                break;            else{                b=false;            }        }    }    private static void Bubble_Sort_DES(int[] A) {        // TODO Auto-generated method stub        int length = A.length;        boolean b=false;        for(int i=length-1;i>0;i--){            for(int j=0;j<i;j++){                if(A[j]<A[j+1])                {                    int temp = A[j];                    A[j]=A[j+1];                    A[j+1]=temp;                    b=true;                }            }            if(b==false)                break;            else{                b=false;            }        }    }        // 打印数组        private static void print(int[] A) {            // TODO Auto-generated method stub            for (int i = 0; i < A.length; i++) {                System.out.print(A[i] + "\t");            }            System.out.println();        }}

运行结果:
这里写图片描述

原创粉丝点击