冒泡排序(Bubble Sort),作为最基本的排序算法,是检验程序员代码基础功底的基本方法。本文将介绍一下,冒泡排序的基本原理和代码实现(Java)。
冒泡排序重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”(简介来自百度百科)。
- 下面来通过长度为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 =数组名);
Hello!
@oakley Please say clear about your question.haha Very happy to received your m.