“冒泡排序法”可以将一个无序的数组按照从小到大的顺序或者是从大到小的顺序进行排序,是一种较为常见的排序算法,因为数据从小到大或者从大到小地到数列头或者数列末的过程称为“冒泡”。对于冒泡排序我觉得最重要的两点就是:(1)需要重新排序的次数,即循环的次数,这个是根据数组的序列的大小来定的,比如数组的大小为n的话,需要循环的次数就为(n - 1)次;(2)另外一个就是每次循环需要进行数据之间比较的次数,每次排序后可以确定出最大或者最小的那个数据,下次循环时就不用再进行比较了,所以每次进行比较的次数是(n - i);
对于一个数组无序的情况,无论是从大到小排序还是从小到大冒泡,假如是一个n个数据的数组,那么第一个数据无需跟自己进行大小比较了,那么需要进行比较的是跟余下的n - 1个数据,所以需要重新进行排序的循环次数是n - 1次,在每次循环的过程中需要进行的比较次数的确定也是一个关键,在第一次循环的过程可以确定(以从小到大为例)最大的那个数那么在下一次的循环中就不用再进行比较了。
下面这个实例是对数组进行从小到大排序:
1 package ren.arrayListSortedTest; 2 3 import java.util.Scanner; 4 5 public class ArraySortedTest { 6 //排序 7 public static void sort(int [] unSortedArray){ 8 for(int i=1;i<unSortedArray.length;i++){ 9 for(int j=0;j<unSortedArray.length-i;j++){ 10 if(unSortedArray[j]>unSortedArray[j+1]){ 11 int temp = unSortedArray[j]; 12 unSortedArray[j]=unSortedArray[j+1]; 13 unSortedArray[j+1]=temp; 14 } 15 } 16 } 17 18 } 19 //打印(已排序好) 20 public static void print(int [] unPrintedArray){ 21 for(int i=0;i<unPrintedArray.length;i++){ 22 System.out.print(unPrintedArray[i]+","); 23 } 24 } 25 public static void main(String[] args){ 26 Scanner sc = new Scanner(System.in); 27 //第一个键盘输入指定数组开辟的大小 28 int [] unSortedArray = new int[sc.nextInt()]; 29 for(int i=0;i<unSortedArray.length;i++){ 30 //键盘输入为指定数组的内容 31 unSortedArray[i]=sc.nextInt(); 32 } 33 ArraySortedTest.sort(unSortedArray); 34 ArraySortedTest.print(unSortedArray); 35 System.out.println("排序执行结束.."); 36 } 37 }
执行结果:
通过键盘输入5确定要开辟的数组的容量是5个数据的数组,然后再指定每个元素的大小是多少,这里的原始的数组是[34,23,11,65,24],排序后结果为[11,23,24,34,65]。