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

 

posted @ 2017-10-09 17:12  那么长的代码  阅读(1141)  评论(0编辑  收藏  举报