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

    package com.java.base.sort.algorithm;
    
    /**
     * 冒泡排序
     *
     * <p>算法思路:
     *
     * <p>1.从数列第一个数开始,比较每相邻的两个数, 将较大(或较小)数交换至后面,直到将最大的数交换到数列最后
     *
     * <p>2.再循环第一步直到数列中只剩下第一个数
     *
     * 算法复杂度:O(n²)
     * 稳定性:稳定
     *
     * @author lxy
     */
    public class BubbleSort {
    
      /**
       * 交换
       */
      private static void swap(int[] array, int m, int n) {
        int tmp = array[m];
        array[m] = array[n];
        array[n] = tmp;
      }
    
      /**
       * 冒泡排序:9,8,11,17,12,2,4,5,20,3,1
       */
      public static int[] bubbleSort(int[] array) {
        if (array == null || array.length == 0) {
          throw new IllegalArgumentException("array must be not empty!");
        }
        if (array.length == 1) {
          return array;
        }
    
        for (int i = array.length - 1; i > 0; i--) {
          for (int j = 0; j < i; j++) {
            if (array[j] > array[j + 1]) {
              swap(array, j, j + 1);
            }
          }
        }
        return array;
      }
    
      /**
       * 测试
       */
      public static void main(String[] args) {
        int[] array = {9, 8, 11, 17, 12, 2, 4, 5, 20, 3, 1};
        System.out.println("冒泡排序前:");
        for (int i = 0; i < array.length; i++) {
          System.out.print(array[i]);
          System.out.print(",");
        }
        array = BubbleSort.bubbleSort(array);
        System.out.println("
    冒泡排序后:");
        for (int i = 0; i < array.length; i++) {
          System.out.print(array[i]);
          System.out.print(",");
        }
      }
    }
    
    

    执行结果:

    冒泡排序前:
    9,8,11,17,12,2,4,5,20,3,1,
    冒泡排序后:
    1,2,3,4,5,8,9,11,12,17,20,
    
  • 相关阅读:
    vagrant up报错 Warning: Authentication failure. Retrying...解决方案
    node读写Excel操作
    批量转换word为pdf
    分享7个shell脚本实例--shell脚本练习必备
    shell脚本实例,通向shell脚本大师的必经之路
    前端优化DNS预解析
    如何选择开源协议
    深入理解document.referrer的用法
    使用 WebRTC 构建简单的前端视频通讯
    深入理解WebRTC
  • 原文地址:https://www.cnblogs.com/lxyit/p/9404242.html
Copyright © 2011-2022 走看看