没按方法来写 主要是思想
用^来交换数组更好
x=x^y
y=x^y
x=x^y
//冒泡
public class BubbleSort {
public static void main(String[] args) {
int arr[] = {4, 1, 7, 9, 2, 3};
//六个数 只需五次大循环 确定五个数的排序
for (int i = 0; i < arr.length - 1; i++) {
//每次大循环从0开始 数组倒数的数是每次大循环排好的,故j自增的上限每次大循环都会减少i
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
arr[j] = arr[j] ^ arr[j + 1];
arr[j+1] = arr[j] ^ arr[j + 1];
arr[j] = arr[j] ^ arr[j + 1];
}
}
}
System.out.println(Arrays.toString(arr));
}
}
//选择排序
public class SelectSort {
public static void main(String[] args) {
int arr[] = {4, 1, 7, 9, 2, 3};
//和冒泡一样 从左往右每趟循环选出最小的只需循环数组长度减一个
for(int i=0;i<arr.length-1;i++){
//由于每次大循环之后 数组前面的数已经是最小的值 故比较下标需要后移 J值上限要和冒泡区别一下:冒泡排序由于是相邻两个比较j和J+1比 故需要arr.length额外-1 ,而选择排序是每趟大循环前面的固定位置上的数和后面所有的数比较选出最小的一个,故arr.length
for(int j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
arr[i]^=arr[j];
arr[j]^=arr[i];
arr[i]^=arr[j];
}
}
}
System.out.println(Arrays.toString(arr));
}
}