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

    冒泡排序1:

    public class Bubbling {
    
        public static void sort(int array[]) {
            for(int i =0; i < array.length -1; i++) {
    
                for(int j = 0; j < array.length -1 -i; j++) {
                    int tmp = 0;
                    if(array[j] > array[j+1]) {
                        tmp = array[j];
                        array[j] = array[j+1];
                        array[j+1] = tmp;
                    }
                }
            }
        }
    
        public static void main(String[] args){
            int[] array = new int[]{5,8,6,3,9,2,1,7};
            sort(array);
            System.out.println(Arrays.toString(array));
        }
    }


    冒泡排序优化2

    public class Bubbling1 {
    
        public static void sort(int array[]) {
            for(int i =0; i < array.length -1; i++) {
                //有序标记,每一轮的初始值都是true
                boolean isSorted = true;
                for(int j = 0; j < array.length -1 -i; j++) {
                    int tmp = 0;
                    if(array[j] > array[j+1]) {
                        tmp = array[j];
                        array[j] = array[j+1];
                        array[j+1] = tmp;
                        //因为有元素进行交换,所以不是有序的,标记变为false
                        isSorted = false;
                    }
    
                }
                if(isSorted){
                    break;
                }
            }
        }
    
        public static void main(String[] args){
            int[] array = new int[]{5,8,6,3,9,2,1,7};
            sort(array);
            System.out.println(Arrays.toString(array));
        }
    }


    冒泡排序优化3

    public class Bubbling2 {
    
        public static void sort(int array[]) {
            //记录最后一次交换的位置
            int lastExchangeIndex = 0;
            //无序数列的边界,每次比较只需要比到这里为止
            int sortBorder = array.length - 1;
            for(int i =0; i < array.length -1; i++) {
                //有序标记,每一轮的初始值都是true
                boolean isSorted = true;
                for(int j = 0; j < sortBorder; j++) {
                    int tmp = 0;
                    if(array[j] > array[j+1]) {
                        tmp = array[j];
                        array[j] = array[j+1];
                        array[j+1] = tmp;
                        //因为有元素进行交换,所以不是有序的,标记变为false
                        isSorted = false;
                        // 更新为最后一次交换元素的位置
                        lastExchangeIndex = j;
                    }
    
                }
                sortBorder = lastExchangeIndex;
                if(isSorted){
                    break;
                }
            }
        }
    
        public static void main(String[] args){
            int[] array = new int[]{5,8,6,3,9,2,1,7};
            sort(array);
            System.out.println(Arrays.toString(array));
        }
    }


    冒泡排序4

    public class Bubbling3 {
        public static void sort(int array[]) {
            int tmp = 0;
            for(int i=0; i<array.length/2; i++) {
                //有序标记,每一轮的初始值都是true
                boolean isSorted = true;
                //奇数轮,从左向右比较和交换
                for(int j=i; j<array.length-i-1; j++) {
                    if(array[j] > array[j+1]) {
                        tmp = array[j];
                        array[j] = array[j+1];
                        array[j+1] = tmp;
                        //因为有元素进行交换,所以不是有序的,标记变为false
                        isSorted = false;
                    }
    
                }
    
                if(isSorted){
                    break;
                }
                // 在偶数轮之前,将isSorted重新标记为true
                isSorted = true;
                //偶数轮,从右向左比较和交换
                for(int j=array.length-i-1; j>i; j--) {
                    if(array[j] < array[j-1]) {
                        tmp = array[j];
                        array[j] = array[j-1];
                        array[j-1] = tmp;
                        //因为有元素进行交换,所以不是有序的,标记变为false
                        isSorted = false;
                    }
                }
    
                if(isSorted){
                    break;
                }
            }
        }
    
        public static void main(String[] args){
            int[] array = new int[]{2,3,4,5,6,7,8,1};
            sort(array);
            System.out.println(Arrays.toString(array));
        }
    }

  • 相关阅读:
    数据库主从同步相关问题
    前端使用node.js的http-server开启一个本地服务器
    css中height 100vh的应用场景,动态高度百分比布局,浏览器视区大小单位
    通过浏览器F12开发工具快速获取别的网站前端代码的方法
    vue打包app嵌入h5,区分app进入和android,ios显示不同的下载链接
    vue实现验证码倒计时60秒的具体代码
    vue用hbuilderX打包app嵌入h5方式云打包和遇到的问题
    Cookie写不进去问题深入调查 https Secure Cookie
    vue配置手机通过IP访问电脑开发环境
    区块链名词解析:ICO、IFO、IEO和IMO,分别是什么呢?
  • 原文地址:https://www.cnblogs.com/liuyi13535496566/p/14243980.html
Copyright © 2011-2022 走看看