zoukankan      html  css  js  c++  java
  • 冒泡排序(交换排序)

    简介:

    冒泡排序的基本思想是:设排序序列的记录个数为n,进行n-1次遍历,每次遍历从开始位置依次往后比较前后相邻元素,这样较大的元素往后移,n-1次遍历结束后,序列有序。

    例如,对序列(3,2,1,5)进行排序的过程是:共进行3次遍历。

    第1次遍历时先比较3和2,交换,继续比较3和1,交换,再比较3和5,不交换,这样第1次遍历结束,最大值5在最后的位置,得到序列(2,1,3,5)。第2次遍历时先比较2和1,交换,继续比较2和3,不交换。

    第2次遍历结束时次大值3在倒数第2的位置,得到序列(1,2,3,5)。

    第3次遍历时,先比较1和2,不交换,得到最终有序序列(1,2,3,5)。

    需要注意的是,如果在某次遍历中没有发生交换,那么就不必进行下次遍历,因为序列已经有序。

    实现:

    package suanfa;
    /*
     * 冒泡排序
     */
    public class maopao {
        // 冒泡排序 注意 flag 的作用
        public static void maoPaoSort(int[] array) {
    
            boolean flag = true;
    
            for (int i = 0; i < array.length - 1 && flag; i++) {
    
                flag = false;
    
                for (int j = 0; j < array.length - 1 - i; j++) {
    
                    if (array[j] > array[j + 1]) {
    
                        int temp = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = temp;
    
                        flag = true;
                    }
                }
            }
    
        }
        
        public static void print(int src[]) {
             for (int i = 0; i < src.length; i++) {
                 
                    System.out.print(src[i] + " ");
                }
             System.out.println();
        }
        
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int array[]= {3,2,1,5};
            print(array);
            maoPaoSort(array);
            print(array);
        }
    
    }

    分析:

    最佳情况下冒泡排序只需一次遍历就能确定数组已经排好序,不需要进行下一次遍历,所以最佳情况下,时间复杂度为 O(n)

    最坏情况下冒泡排序需要n-1次遍历,第一次遍历需要比较n-1次,第二次遍历需要n-2次,...,最后一次需要比较1次,最差情况下时间复杂度为 O(n^2)



  • 相关阅读:
    IDEA 初次使用,记录心得
    排序算法代码总结-java版
    SpringMVC支持多对象Form Data绑定
    密码安全性检查代码
    PERL/LEX/YACC技术实现文本解析--XML解析
    C代码工具--自动生成enum值和名字映射代码
    再谈CSHELL对C程序员的价值
    怎样设计一个运行日志服务
    Excel里内嵌在线翻译
    EOS -- 一种灵巧的系统运行跟踪模块
  • 原文地址:https://www.cnblogs.com/liuzhenping/p/7569593.html
Copyright © 2011-2022 走看看