-
冒泡排序(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代码实现:
package com.guohao.arithmetics;
import java.util.Arrays;
import java.util.Scanner;
/**
* 冒泡排序
*/
public class BubbleSort {
public static void main(String[] args){
Scanner reader = new Scanner(System.in);
int n = reader.nextInt(); //要排序的元素个数
int[] arr = new int[n]; //数组arr用于存储待排序的元素
for(int i=0; i<n; i++){
arr[i] = reader.nextInt(); //依次输入待排序的元素
}
reader.close();
//从小到大进行排序
for(int i=0; i<n-1; i++){ //要将n个元素排序至少需进行n-1趟操作
for(int j=0; j<n-i-1; j++){ //每趟操作需进行n-i-1次排序
if(arr[j] > arr[j+1]){ //如果前一个元素比后一个元素大,则二者交换位置
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
System.out.println("排序后的数组:"+Arrays.toString(arr)); //输出排序后的数组
}
}