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,
    
  • 相关阅读:
    常见DOS命令
    前台传参到后台出现中文乱码问题
    Servlet.init() for servlet [spring-dispatcher] threw exception
    ES6-2
    ES6语法(一)
    JS区分对象类型
    ko数组
    sortable的基本属性
    MUI消息推送
    target和currentTarget
  • 原文地址:https://www.cnblogs.com/lxyit/p/9404242.html
Copyright © 2011-2022 走看看