核心是相邻两个数比较,然后交换。
外层控制次数,每一轮后排除掉最后一个。
package com.jlg.T1;
/**
* 冒泡排序
*/
public class MaoPao {
public static void main(String[] args) {
int[] arr = {6,5,2,3,1};
MPPX(arr);
for (int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
//冒泡排序
public static void MPPX(int[] arr){
//遍历数组
for (int i=arr.length-1;i>0;i--){//Q:理论上经过一轮,就可以使得最后的那个成为第几大的那个数,可是之后内部怎么再交换?D:那就让外层循环从大到小,每次排除掉一个最后的
for (int j=0;j<i;j++){//注意:这里是要与外层循环配合,所以必须得小于外层循环,不然超出边界
if (arr[j]>arr[j+1]){
swap(arr,j,j+1);//注意:这里是把下标传过去,就是把地址传过去交换了。
}
}
}
}
//交换算法
public static void swap(int[] arr,int a,int b){
//使用 异或 进行交换
arr[a] = arr[a]^arr[b];
arr[b] = arr[a]^arr[b];
arr[a] = arr[a]^arr[b];
}
}