首先是定义一个数组放入数据,接下来第一次循环把最大的元素放在最后用for和临时变量看出规律后双重循环完成,以及后面的优化如果不交换证明排序完成退出循环
package com.sort;
import javax.sound.midi.Soundbank;
import java.util.Arrays;
/**
* @Auther: 大哥的叔
* @Date: 2019/8/3 16:51
* @Description:
*/
public class BubbleSort {
public static void main (String[] args) {
int arr[] = {3,9,-1,10,-2};
//第一趟排序将最大的元素放置最后
int temp = 0;//临时变量做交换
for (int j = 0; j < arr.length-1; j++) {
for (int i = 0; i < arr.length - 1 - j; i++) {
//如果前面的数比后面的数大就交换
if (arr[i] > arr[i + 1]) {
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
System.out.println(Arrays.toString(arr));
}
for (int i = 0; i < arr.length-1-1; i++) {
//如果前面的数比后面的数大就交换
if (arr[i]>arr[i+1]) {
temp = arr[i];
arr[i]=arr[i+1];
arr[i+1] = temp;
}
}
System.out.println(Arrays.toString(arr));
for (int i = 0; i < arr.length-1-2; i++) {
//如果前面的数比后面的数大就交换
if (arr[i]>arr[i+1]) {
temp = arr[i];
arr[i]=arr[i+1];
arr[i+1] = temp;
}
}
System.out.println(Arrays.toString(arr));
}
}
public static void BubbleSort(int arr[]){
int temp = 0;
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;
}
} System.out.println(Arrays.toString(arr));
System.out.println();
}