- 冒泡排序(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 }