zoukankan      html  css  js  c++  java
  • 冒泡排序的优化算法

    今天我们来介绍冒泡排序的优化算法,对于冒泡排序,相信大家都不会陌生,就是说从最后一个开始挑选,越小的越往上面冒,一般来说这个算法的时间复杂度为O(n^2),但是我们原来不知道想过没有,如果这个序列本身就是很工整的按照一个从小到大的序列进行排序,如果我们依然按照冒泡排序,会显得有点愚钝,例如这个序列为3,2,1,5,9,10,这个序列中,我们只需要把3和1进行替换即可,可是如果使用冒泡的话,我们的替换就会有问题,则此时我们就可以加入一个标志,当如果这个冒泡的从后到前的一次排序时,如果没有经过替换的时候,就说明这个排序已经排序成功,则此时我们就不需要进行排序了

    冒泡排序一般排法:

     1 package BubbleArray;
     2 
     3 public class BubbleArray1 {
     4 
     5     public static void main(String[] args) {
     6         int[] array = new int[]{1,34,16,8,96,17};
     7         bubbleSort(array);
     8         display(array);
     9     }
    10 
    11     private static void display(int[] array) {
    12         for (int i = 0; i < array.length; i++) {
    13             System.out.println(array[i]);
    14         }
    15     }
    16 
    17     public static void bubbleSort(int[] array) {
    18         for (int i = 0; i < array.length -1; i++) {
    19             for (int j = array.length - 1; j > i; j--) {
    20                 if(array[j] < array[j - 1]){
    21                     int tmp = array[j];
    22                     array[j] = array[j - 1];
    23                     array[j - 1] = tmp;
    24                 }
    25             }
    26         }
    27     }
    28     
    29 }

    优化后的代码,添加flag的标志

     1 package cn.xx.test;
     2 
     3 //冒泡
     4 public class C {
     5 
     6     public static void main(String[] args) {
     7         int[] num = {5,47,21,56,32,3,1,4,1,2,5,3,33,5};
     8         sort(num);
     9         display(num);
    10     }
    11     public static void sort(int[] num){
    12         int tmp;
    13         boolean flag = true;
    14         for (int i = 0; i < num.length - 1 && flag; i++) {
    15             flag = false;
    16             for (int j = num.length - 1; j > i ; j--) {
    17                 if(num[j] < num[j - 1]){
    18                     tmp = num[j];
    19                     num[j] = num[j - 1];
    20                     num[j - 1] = tmp;
    21                     flag = true;
    22                 }
    23             }
    24         }
    25     }
    26     public static void display(int[] num){
    27         for (int i = 0; i < num.length; i++) {
    28             System.out.println(num[i]);
    29         }
    30     }
    31 }
  • 相关阅读:
    待思考问题---数据库的分层模型
    iOS的常用类库
    java spring是元编程框架---使用的机制是注解+配置
    Java Virtual Machine (JVM), Difference JDK, JRE & JVM – Core Java
    Spring注解的使用和组件扫描
    Spring Boot实战:拦截器与过滤器
    问题、存在与认知---问题产生的原因是对存在的不完全或错误认知
    元编程的分层模型
    元编程的本质---高级语言的表达通过解释生成低级语言的表达(代码)
    aop分层模型——aop是元编程的一种
  • 原文地址:https://www.cnblogs.com/wnbahmbb/p/6471371.html
Copyright © 2011-2022 走看看