现在的位置: 首页 > 综合 > 正文

在冒泡排序中,用异或的方式对数组元素的位置互换

2018年05月23日 ⁄ 综合 ⁄ 共 846字 ⁄ 字号 评论关闭

毕老师的视频中有提到过这种方法,但没有写到,我补充一下,以及自己在其中遇到的问题。

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]+"]");
}
}
}

抱歉!评论已关闭.