• 冒泡排序(Bubble Sort)


    冒泡排序的基本思路

      冒泡排序是一种效率极低的排序,首先它需要知道数组的有效数据长度,对数据第一个和第二个两两比较按照比较规则进行交换,然后第二个数据和第三个数据进行比较,按照比较规则进行交换;第一轮比较完成,再从头比较;以此类推数组中的每个数据都彼此比较过。

    如果有效长度为n,那么冒泡排序需要进行n-1轮比较。每一轮比较n-j次比较,j代表轮次。

    如图分析从大到小排序:

    原数组有效长度为5,第一轮比较5-1次。

    ===========================================================

    第二轮比较5-2次,得到第二个最值4。

    ===========================================================

    第三轮比较5-3次,得到第三个最值3。

    ===========================================================

    有效长度为5,一共进行5-1轮比较,最后一轮比较得到排序结果

    ==============================================================

     代码分析:

     1 package com.yxiao.test;
     2 //冒泡排序进行数组元素排序
     3 public class BubbleSortDemo {
     4     public static void main(String[] args) {
     5         int[] arr = {5,4,3,2,1};//静态初始化一个数组
     6         //冒泡排序
     7         for(int i = 0; i < arr.length-1; i ++) {//length个数需要length-1轮比较
     8             for(int j = 0; j < arr.length - 1 - i; j ++) {//每次进行length-1-i次比较
     9                 if(arr[j] > arr[j + 1]) {//如果当前元素大于后面一个元素则进行交换
    10                     int temp = arr[j];
    11                     arr[j] = arr[j + 1];
    12                     arr[j + 1] = temp;
    13                 }
    14             }
    15         }
    16         for (int i : arr) {//遍历排序后的数组
    17             System.out.print(i + " ");
    18         }
    19     }
    20 }
    输出结果:1 2 3 4 5 
  • 相关阅读:
    1052. 爱生气的书店老板
    766. 托普利茨矩阵
    643.子数组的最大平均数I
    450. 删除二叉搜索树中的节点
    1489.找到最小生成树里的关键边和伪关键边
    839相似字符串
    1631.最小体力消耗路径
    SnowFlake雪花算法源码分析&灵活改造,常见分布式ID生成解决方案
    【目标检测】三、Faster R-CNN与R-FCN
    【目标检测】二、Fast R-CNN与SVD
  • 原文地址:https://www.cnblogs.com/yxiaooutlook/p/7641868.html
Copyright © 2020-2023  润新知