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;
        }
  • 相关阅读:
    Android 查看通讯录Contacts是否发生变化
    卓尼斯ZT-180评測
    C++中的单例模式
    Android 动画之ScaleAnimation应用具体解释
    java的静态代理
    词性标注
    ubuntu 11.04安装笔记
    机房收费系统学生下机结账小结
    MyBatis入门学习(一)
    !!!!OpenWrt系列教程汇总
  • 原文地址:https://www.cnblogs.com/orlion/p/4792719.html
Copyright © 2011-2022 走看看