冒泡排序

boolean flag;
for(int i=0; i<arr.length-1; i++){
  flag = true;
  for(int j=0; j<arr.length-i-1; j++){
    if(arr[j] > arr[j+1]){
      //a=a+b-(b=a); 交换
      arr[j] = arr[j] +arr[j+1] - (arr[j+1] = arr[j]);
      flag = false;
    }
  }
  //如果本次没有进行交换,则代表已经有序,提前结束
  if(flag) break;
}

交换方式二,异或:

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+1] ^ arr[j];
}