所谓的冒泡排序即每一次遍历都找到最大的一个数放到最后。
从index=0开始遍历,与下一个值进行对比,如果arr[i]>arr[i+1],则交换二者位置,否则位置不变。后移一位再与下一位对比,这样保证每一次遍历结束后都可以取到一个最大的数。
1. 第一次遍历获取到最大的数10,放置在index=9位置上
2. 第二次遍历找到剩余数据中最大的数据9,放置在index=8位置上
3.直至某次遍历没有进行任何数据交换则说明该数组已经是从小到大排序了的
public static void main(String[] args) {
int[] arr = {6,1,2,7,9,3,4,5,10,8};
execute(arr);
}
private static void execute(int[] arr){
print("输入",arr);
for (int i = 0; i < arr.length; i++) {
boolean swaped = false;
for (int j = 1; j < arr.length - i; j++) {
// 后一个值比前一个值小则交换
if(arr[j]
输入:[6,1,2,7,9,3,4,5,10,8]
执行转换:[0,1]
转换前:[6,1,2,7,9,3,4,5,10,8]
转换后:[1,6,2,7,9,3,4,5,10,8]
执行转换:[1,2]
转换前:[1,6,2,7,9,3,4,5,10,8]
转换后:[1,2,6,7,9,3,4,5,10,8]
执行转换:[4,5]
转换前:[1,2,6,7,9,3,4,5,10,8]
转换后:[1,2,6,7,3,9,4,5,10,8]
执行转换:[5,6]
转换前:[1,2,6,7,3,9,4,5,10,8]
转换后:[1,2,6,7,3,4,9,5,10,8]
执行转换:[6,7]
转换前:[1,2,6,7,3,4,9,5,10,8]
转换后:[1,2,6,7,3,4,5,9,10,8]
执行转换:[8,9]
转换前:[1,2,6,7,3,4,5,9,10,8]
转换后:[1,2,6,7,3,4,5,9,8,10]
执行转换:[3,4]
转换前:[1,2,6,7,3,4,5,9,8,10]
转换后:[1,2,6,3,7,4,5,9,8,10]
执行转换:[4,5]
转换前:[1,2,6,3,7,4,5,9,8,10]
转换后:[1,2,6,3,4,7,5,9,8,10]
执行转换:[5,6]
转换前:[1,2,6,3,4,7,5,9,8,10]
转换后:[1,2,6,3,4,5,7,9,8,10]
执行转换:[7,8]
转换前:[1,2,6,3,4,5,7,9,8,10]
转换后:[1,2,6,3,4,5,7,8,9,10]
执行转换:[2,3]
转换前:[1,2,6,3,4,5,7,8,9,10]
转换后:[1,2,3,6,4,5,7,8,9,10]
执行转换:[3,4]
转换前:[1,2,3,6,4,5,7,8,9,10]
转换后:[1,2,3,4,6,5,7,8,9,10]
执行转换:[4,5]
转换前:[1,2,3,4,6,5,7,8,9,10]
转换后:[1,2,3,4,5,6,7,8,9,10]
输出:[1,2,3,4,5,6,7,8,9,10]