• 冒泡排序的优化算法


    今天我们来介绍冒泡排序的优化算法,对于冒泡排序,相信大家都不会陌生,就是说从最后一个开始挑选,越小的越往上面冒,一般来说这个算法的时间复杂度为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 }
  • 相关阅读:
    计算GPS WGS_84 两点的距离
    极路由4_开ssh_刷breed
    aes-256-gcm_python3_php7_golang
    nginx_非标准端口_同端口_http_自动跳转_https
    配置sshd_除了特定ip外_仅密钥登录
    使用scp命令实现服务器之间文件传输
    Java防止重复提
    mysql使用SUBSTRING_INDEX截取部分字符串
    SEO大杀器rendertron安装
    PIC16 bootloader之I2C bootloader
  • 原文地址:https://www.cnblogs.com/wnbahmbb/p/6471371.html
Copyright © 2020-2023  润新知