冒泡排序(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
本人拙见,若有什么不当的地方,希望大家多多指正!谢谢!