zoukankan      html  css  js  c++  java
  • 冒泡排序java代码

    冒泡排序就是依次取出最大数,然后依次交换放到数组最后边。

    直观写法:

    public long[] sort(long[] a){
            
            int n = a.length - 1;
            // Step:1 选出最大数
            for(int i = 0 ; i < n; i++){
                // 如果前一个数大于后一个数则交换
                if(a[i] > a[i+1]){
                    a[i] = a[i] ^ a[i+1];
                    a[i+1] = a[i+1] ^ a[i];
                    a[i] = a[i] ^ a[i+1];
                }
            }
            n--;
            // Step:2 选出第二大数
            for(int i = 0 ; i < n; i++){
                // 如果前一个数大于后一个数则交换
                if(a[i] > a[i+1]){
                    a[i] = a[i] ^ a[i+1];
                    a[i+1] = a[i+1] ^ a[i];
                    a[i] = a[i] ^ a[i+1];
                }
            }
            n--;
            // Step:3
            for(int i = 0 ; i < n; i++){
                // 如果前一个数大于后一个数则交换
                if(a[i] > a[i+1]){
                    a[i] = a[i] ^ a[i+1];
                    a[i+1] = a[i+1] ^ a[i];
                    a[i] = a[i] ^ a[i+1];
                }
            }
            n--;
            // Step:4
            for(int i = 0 ; i < n; i++){
                // 如果前一个数大于后一个数则交换
                if(a[i] > a[i+1]){
                    a[i] = a[i] ^ a[i+1];
                    a[i+1] = a[i+1] ^ a[i];
                    a[i] = a[i] ^ a[i+1];
                }
            }
            n--;
            System.out.println("n=" + n);
            // Step:5
            for(int i = 0 ; i < n; i++){
                // 如果前一个数大于后一个数则交换
                if(a[i] > a[i+1]){
                    a[i] = a[i] ^ a[i+1];
                    a[i+1] = a[i+1] ^ a[i];
                    a[i] = a[i] ^ a[i+1];
                }
            }
            n--;
            return a;
        }

    加个for循环:

    public long[] sort(long[] a){
            
            int n = a.length - 1;
            for(int j = 0 ; j < a.length ; j++){
                for(int i = 0 ; i < n; i++){
                    // 如果前一个数大于后一个数则交换
                    if(a[i] > a[i+1]){
                        a[i] = a[i] ^ a[i+1];
                        a[i+1] = a[i+1] ^ a[i];
                        a[i] = a[i] ^ a[i+1];
                    }
                }
                n--;
            }
            return a;
        }
  • 相关阅读:
    指定的架构无效。错误: CLR 类型到 EDM 类型的映射不明确
    win7IIS错误修改路径最全的
    如何设置textarea光标默认为第一行第一个字符
    我的Hexo网站
    Leetcode Round 4 记录
    几何编程题
    Leetcode Round 3 记录
    几何概型
    Roman Number & Integer
    Single Number
  • 原文地址:https://www.cnblogs.com/orlion/p/4792719.html
Copyright © 2011-2022 走看看