• 冒泡排序算法


    冒泡排序算法的运作如下:
    1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
    2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
    3. 针对所有的元素重复以上的步骤,除了最后一个。
    4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

    冒泡排序的Java实现:

    复制代码
     1 package com.mianshi.easy;
     2 public class Bubble {
     3     
     4     public static void main(String[] args) {
     5         
     6         int[] a = {3,1,2,5,4,6,9,8,7};
     7         
     8         bubbleSort(a);
     9         
    10         for(int i = 0; i < a.length; i++){
    11             System.out.print(a[i]+" ");
    12         }
    13         
    14     }
    15 
    16     //冒泡排序算法实现
    17     public static void bubbleSort(int[] arr){
    18         
    19         for(int i = 0; i < arr.length-1; i++)
    20         {
    21             for(int j = 0; j<arr.length-i-1; j++)
    22             {
    23                 if(arr[j] > arr[j+1])
    24                 {
    25                     int temp = arr[j];
    26                     arr[j] = arr[j+1];
    27                     arr[j+1] = temp;
    28                 }
    29             }
    30         }
    31     }
    32 }
    33 
    34 结果:
    35 1 2 3 4 5 6 7 8 9

    复制代码
     1 package com.mianshi.easy;
     2 public class Bubble {
     3     
     4     public static void main(String[] args) {
     5         
     6         int[] a = {3,1,2,5,4,6,9,8,7};
     7         
     8         bubbleSort(a);
     9         
    10         for(int i = 0; i < a.length; i++){
    11             System.out.print(a[i]+" ");
    12         }
    13         
    14     }
    15 
    16     //冒泡排序算法实现
    17     public static void bubbleSort(int[] arr){
    18         
    19         for(int i = 0; i < arr.length-1; i++)
    20         {
    21             for(int j = 0; j<arr.length-i-1; j++)
    22             {
    23                 if(arr[j] > arr[j+1])
    24                 {
    25                     int temp = arr[j];
    26                     arr[j] = arr[j+1];
    27                     arr[j+1] = temp;
    28                 }
    29             }
    30         }
    31     }
    32 }
    33 
    34 结果:
    35 1 2 3 4 5 6 7 8 9 
    复制代码

    外层循环控制比较轮数,每轮取最大(或最小)元素放到数组尾部,9个元素比较8次,即可完成排序。
    内层循环控制每轮的比较次数,去掉前几轮拍好的后面的几个元素。
    首轮比较8次,第二轮除去排好序的末尾元素,还需比较7次……

    算法稳定性:稳定的排序算法。

    时间复杂度: 

    PS:排序算法的稳定性

    假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。

  • 相关阅读:
    根据时间进行条件筛选查询问题记录
    实体类中如何自动生成serialVersionUID
    MySql中的IFNULL、NULLIF和ISNULL用法
    Intellij IDEA运行报Command line is too long问题的解决
    百度搜索框搜索时显示或者隐藏历史搜索记录
    项目中引用其他的项目的模块运行时出现bean not be found
    MySQL中CONCAT()函数拼接出现NULL的问题
    String.contains(object o)报出空指针异常!
    uniapp 微信发送订阅消息
    python 定时任务apscheduler的使用
  • 原文地址:https://www.cnblogs.com/s844876674/p/4684516.html
Copyright © 2020-2023  润新知