冒泡排序的的代码实现
冒泡排序 * 5,6,1,4,9,7,3,10 一共需要比较总的元素-1轮 * 以第一个数5与下一个比较,如果比5大则交换,如第一轮比较5比6小,不交换 * 5,6,1,4,9,7,3,10 * 第二次比较 6与1比较,6大于1,交换 * 5,1,6,4,9,7,3,10 * 第三次比较 6与4比较,交换 * 5,1,4,6,9,7,3,10 * 直到比较的第一轮结束后, * 5,1,4,6,7,3,9,10 * 确定10为最大,不用参加比较,然后继续下一轮比较
具体代码实现,每步都有注释
package demo3;
import java.util.Arrays;
/**
* 冒泡排序
*/
public class BubbleSort {
public static void main(String[] args) {
int[] arr = new int[]{5,6,1,4,9,7,3,10};
bubbleSort(arr);
System.out.println("arr = " + Arrays.toString(arr));
}
/**
* 冒泡排序
* 5,6,1,4,9,7,3,10 一共需要比较arr.length-1轮
* 以第一个数5与下一个比较,如果比5大则交换,如第一轮比较5比6小,不交换
* 5,6,1,4,9,7,3,10
* 第二次比较 6与1比较,6大于1,交换
* 5,1,6,4,9,7,3,10
* 第三次比较 6与4比较,交换
* 5,1,4,6,9,7,3,10
* 直到比较的第一轮结束后,
* 5,1,4,6,7,3,9,10
* 确定10为最大,不用参加比较,然后继续下一轮比较
* @param arr
*/
public static void bubbleSort(int[] arr){
for(int i=0;i<arr.length-1;i++){//控制比较多少轮
for(int j=0;j<arr.length-1-i;j++){
//i<arr.length-1-i,比较的次数,每比较完一轮,就减去最后一个数,使之不参与比较
//把这一轮里的两个数进行比较
if(arr[j]>arr[j+1]){//1,把第一个数与第二个数进行比较,如果第一个大于第二个,则进行交换位置
int temp = arr[j];//2,先把大于的这个数赋值给一个临时变量
arr[j]=arr[j+1];//把小于的这个数赋值给前面这个
arr[j+1]=temp;//交换位置完成
}
}
}
}
}