zoukankan      html  css  js  c++  java
  • 数组排序(1)-冒泡排序

    (一)冒泡排序

        冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

      1.算法描述:

        (1) 比较相邻的元素。如果第一个比第二个大,就交换它们两个;

        (2) 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;

        (3) 针对所有的元素重复以上的步骤,除了最后一个;

        (4) 重复步骤1~3,直到排序完成。

      2.手动模拟:

        

      3.算法分析: 

        (1)时间复杂度:T(n) = O(n2)   最好情况O(n)  最坏情况O(n2

        (2)空间复杂度:O(1)

        (3)稳定性:稳定

    (二)代码体现

    public class BubbleSort {
        public static void main(String[] args) {
            int[] arr = {3,4,1,2,7,8,6,5};
            Bubble(arr);//排序
            System.out.println("-----------------------------------------");
            print(arr);//打印结果
    
        }
    
        private static void Bubble(int[] arr) {
            //数组为空或者数组中只有一个元素,不需要排序
            if(arr == null || arr.length <= 1){
                return;
            }
            for (int i = 0; i < arr.length - 1; i++) {
                boolean flag = true;//如果为true表示已经排序好了
                for (int j = 0; j < arr.length - 1 -i; j++) {
                    if(arr[j] > arr[j + 1]){
                        //交换
                        int temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                        flag = false;
                    }
                }
                if(flag == true){
                    break;
                }
                //打印每一趟排序后的顺序
                print(arr);
            }
        }
    
        public static void print(int[] arr){
            StringBuilder sb = new StringBuilder("[");
            for (int i = 0; i < arr.length; i++) {
                sb.append(arr[i]);
                if(i != arr.length - 1){
                    sb.append(", ");
                }
            }
            System.out.println(sb.append("]"));
        }
    }
    BubbleSort

     

  • 相关阅读:
    工作实战之项目常用技术
    Thymeleaf的错误解决方式
    实用小demo
    idea常用的几个插件
    idea2019+Plugins中搜索不到任何插件解决办法
    git的初体验
    springboot2.+的整合log4j2错误解决浅谈
    MobaXterm百度网盘下载
    阿里云RDS云数据库连接步骤
    读源码学编程之——死循环妙用
  • 原文地址:https://www.cnblogs.com/bug-baba/p/10546652.html
Copyright © 2011-2022 走看看