JavaStudy — 冒泡排序算法(Bubble Sort)的实现

/ 2评 / 2

冒泡排序(Bubble Sort),作为最基本的排序算法,是检验程序员代码基础功底的基本方法。本文将介绍一下,冒泡排序的基本原理和代码实现(Java)。

冒泡排序重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”(简介来自百度百科)。

  1. 下面来通过长度为10的数组来演示冒泡排序的过程
22 58 72 10 90 19 91 10 75 11 原始数据格式

22 58 10 72 19 90 10 75 11 91 第一次比较  比较了9次 将 91 拿走

22 10 58 19 72 10 75 11 90    第二次比较  比较了8次 将 90 拿走

10 22 19 58 10 72 11 75       第三次比较  比较了7次 将 75 拿走

10 19 22 10 58 11 72          第四次比较  比较了6次 将 72 拿走

10 19 10 22 11 58             第五次比较  比较了5次 将 58 拿走

10 10 19 11 22                第六次比较  比较了4次 将 22 拿走

10 10 11 19                   第七次比较  比较了3次 将 19 拿走

10 10 11                      第八次比较  比较了2次 将 11 拿走

10 10                         第九次比较  比较了1次 将 10 拿走

10                            数组长度-1  数组长度-外循环次数-1

2. 代码实现该过程

<sup>

import java.util.Random;


public class BubbleSort01 {
    public static void main(String[] args) {
        Random ran = new Random();// 定义一个变量 用来随机生成
        int[] arr = new int[10];// 定义一个长度为 10 的数组

        for (int i = 0; i <arr.length ; i++) { // 通过遍历将随机数 0-100 写入到数组当中 
            arr[i] = ran.nextInt(100);
        }

        System.out.println("数组进行排序之前的值: ");

        for (int i = 0; i < arr.length; i++) { // 通过遍历将数组输出
            System.out.printf(arr[i]+" ");
        }

        // 开始进行排序
        for (int i = 0; i < arr.length-1; i++) { // 外循环
            for (int j = 0; j < arr.length-i-1; j++) { // 内循环
                if (arr[j] >= arr[j+1]){
                    // 交换位置
                    arr[j] ^= arr[j+1];
                    arr[j+1] ^= arr[j];
                    arr[j] ^= arr[j+1];
                }
            }
        }
        // 输出排序后的数组
        System.out.println(" ");
        for (int i = 0; i < arr.length; i++) {
            System.out.printf(arr[i]+" ");
        }
    }
}
</sup>

3. 输出结果

数组进行排序之前的值:
94 22 57 20 43 84 82 26 88 85

数组进行排序之后的值:
20 22 26 43 57 82 84 85 88 94

4. 附加: Java中内置的排序方法 Array.sort( arr =数组名);

  1. oakley说道:

    Hello!

回复 oakley 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注