排序之冒泡排序

冒泡排序

简介

冒泡排序简而言之是像冒泡泡一样一次把一个元素放到[可以放到的]最顶端。

思路

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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值