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

    • 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。
    • 冒泡排序的基本原理是:每一趟只将一个数归位。若要将n个元素排序,至少需要进行n-1趟操作。

    以将12、35、99、18、76这5个数按照从小到大的循序进行排序为例:
    第1趟操作:将最大的数归位,需进行4次排序。
    (1)将12与35进行比较,12<35, 不用交换位置,结果:12,35,99,18,76.
    (2)将35与99进行比较,35<99, 不用交换位置,结果:12,35,99,18,76.
    (3)将99与18进行比较,99>18, 顺序错误,二者交换位置,结果:12,35,18,99,76.
    (4)将99与76进行比较,99>76, 顺序错误,二者交换位置,结果:12,35,18,76,99.
    至此,最大的数99归位

    第2趟操作:将第二大的数归位,需进行3次排序。
    (1)将12与35进行比较,12<35, 不用交换位置,结果:12,35,18,76,99.
    (2)将35与18进行比较,35>18, 顺序错误,二者交换位置,结果:12,18,35,76,99.
    (3)将35与76进行比较,35<76, 不用交换位置,结果:12,18,35,76,99.
    至此,第二大的数76归位

    第3趟操作:将最中间的数归位,需进行2次排序。
    (1)将12与18进行比较,12<18, 不用交换位置,结果:12,18,35,76,99.
    (2)将18与35进行比较,18<35, 不用交换位置,结果:12,18,35,76,99.
    至此,最中间的数35归位

    第4趟操作:将第二小的数归位,需进行1次排序。
    将12与18进行比较,12<18, 不用交换位置,结果:12,18,35,76,99.
    至此,第二小的数18归位

    java代码实现:

     1 package com.guohao.arithmetics;
     2 
     3 import java.util.Arrays;
     4 import java.util.Scanner;
     5 
     6 /**
     7  * 冒泡排序
     8  */
     9 public class BubbleSort {
    10     public static void main(String[] args){
    11         Scanner reader = new Scanner(System.in);
    12         int n = reader.nextInt();  //要排序的元素个数
    13         int[] arr = new int[n];  //数组arr用于存储待排序的元素
    14 
    15         for(int i=0; i<n; i++){
    16             arr[i] = reader.nextInt();  //依次输入待排序的元素
    17         }
    18         reader.close();
    19 
    20         //从小到大进行排序
    21         for(int i=0; i<n-1; i++){  //要将n个元素排序至少需进行n-1趟操作
    22             for(int j=0; j<n-i-1; j++){  //每趟操作需进行n-i-1次排序
    23                 if(arr[j] > arr[j+1]){ //如果前一个元素比后一个元素大,则二者交换位置
    24                     int temp = arr[j];
    25                     arr[j] = arr[j+1];
    26                     arr[j+1] = temp;
    27                 }
    28             }
    29         }
    30 
    31         System.out.println("排序后的数组:"+Arrays.toString(arr));  //输出排序后的数组
    32     }
    33 }
  • 相关阅读:
    使用反射调用某个类的成员方法
    java反射机制
    SVProgressHUD
    __objc__
    loadView
    v2ex 下拉刷新 SCRootViewController
    stuck with
    v2ex 下拉刷新模块
    转载
    vue-cli脚手架构建了项目如何去除Eslint验证(语法格式验证)
  • 原文地址:https://www.cnblogs.com/Seraph1999/p/12723663.html
Copyright © 2011-2022 走看看