1.基本原理
从头开始比较相邻的两个数,将较大的数放在后面,较小的放在前面。
1.1具体步骤
1)先比较第一个数和第二个数,将较大的数放在后面,较小的放在前面
2)在较第二个数和第三个数,将较大的数放在后面,较小的放在前面
…以此类推…
n)最后比较后两个数,将较大的数放在后面,较小的放在前面
这样这个数组的最大值就成为了最后一位,然后继续对n-1个数按照上述方法执行,以此类推
2.代码演示
例
int[] arr = {15,10,22,1,8}
第一次
{10,15,22,1,8}
{10,15,22,1,8}
{10,15,1,22,8}
{10,15,1,8,22}//最大数22就在最后了
第二次
{10,15,1,8,22}
{10,1,15,8,22}
{10,1,8,15,22}//15也冒上来了
第三次
{1,10,8,15,22}
{1,8,10,15,22}//10也冒上来了
第四次
{1,8,10,15,22}//排序完成
3.源代码
public class BubbleSort {
public static void main(String[] args) {
int arr[] = { 15,10,22,1,8 };
System.out.println("原数组为:"+Arrays.toString(arr));
Sort(arr);
System.out.println("排序后为:"+Arrays.toString(arr));
}
public static void Sort(int[] arr) {
int temp;
boolean flag = false;
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
flag = true;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
//上述第三次排序其实已经完成,没必要进行第四次
if (!flag) {// 如果没有交换一次,证明已经排序好了,则退出循环
break;
} else {
flag = false;
}
}
}
}