毕老师的视频中有提到过这种方法,但没有写到,我补充一下,以及自己在其中遇到的问题。
public class ArrayTest2 {
public static void main(String[] args) {
int [] arr={5,1,6,4,2,8,9};
printArray(arr);
bubbleSort(arr);
printArray(arr);
}
//冒泡排序
public static void bubbleSort(int [] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for (int y=0;y<arr.length-x-1;y++)//-x:让每一次的比较的元素减少, -1:避免角标越界
{
if(arr[y]>arr[y+1])
{
//下面这个代码大家要注意,我第一次,就在这栽跟头了,写成了swap(arr,x,y);
swap(arr,y,y+1);
// int temp=arr[y];
// arr[y]=arr[y+1];
// arr[y+1]=temp;
}
}
}
}
public static void swap(int []arr, int a,int b )
{
//这个是常规的位置置换方法
//int temp=arr[a];
//arr[a]=arr[b];
//arr[b]=temp;
//毕老师提到过的方法,
arr[a]=arr[a]^arr[b];
arr[b]=arr[b] ^arr[a];
arr[a] =arr[a]^arr[b];
}
public static void printArray(int [] arr)
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.println(arr[x]+"]");
}
}
}