冒泡排序
简介
冒泡排序简而言之是像冒泡泡一样一次把一个元素放到[可以放到的]最顶端。
思路
1.冒泡的核心是进行交换当nums[i] > nums[i+1]就交换,i要一直到n-2
i+1是n-1也就是到末尾。
2…假设数组的大小为n,按照这种起泡排序是最多需要n-1次这样的排序,但实际情况有可能不需要这么多次就排序完成了,所以设立一个flag当没有进行交换时就代表排序结束了,因为冒泡排序必须有交换的。
注:这里的交换是利用的异或交换,但是不可以自身交换,如果需要会遇到自身交换的情况应该设置临时变量。
这里异或交换有一个简单方法就是:假设A,B代表两个要交换的数字
A =A^ B ;
B =A^ B ;
A =A^ B ;
类似的:
A ^= B;
B ^= A;
A ^= B;
都是一样的也就是ABA的方法
代码
以下是代码:
class Solution {
public int[] sortArray(int[] nums) {
boolean flag = true;
while(flag){
flag = false;
for(int i = 0;i < nums.length-1;i++){
if(nums[i] > nums[i+1]){
nums[i] ^= nums[i+1];
nums[i+1] ^= nums[i];
nums[i] ^= nums[i+1];
flag = true;
}
}
}
return nums;
}
}