1,冒泡排序的思想
"冒泡"从字面意思上可以理解为生活中我们常喝的碳酸饮料,摇一摇里面的二氧化碳就会从底部浮到顶部.
在计算机领域,冒泡排序的思想大致分为以下步骤:
1) 从前往后,每相邻的两个元素进行比较,将较大的元素依次往后排;
2) 第一次进行两两元素比较,将最大元素将排在后面,也就是最大索引值处;
3)在第二次进行两两元素比较时,因为已经出现一个最大值,此最大值不参与比较;
4)依次进行比较,当进行第n次比较,有数组长度-1个元素不参与比较,直至所有元素从小到大依次排序.
2.冒泡排序的图示
假设一组元素{ 9 , 8 , 7 , 6 , 5 , 4 };
…
第五轮比较:
第四轮比较
第三轮比较:
第二轮比较:
第一轮比较:
从以上冒泡排序的图示中,第一次比较后将产生一个最大值,第二次产生第二个最大值,依次往上,越往上就如同气泡从底端往上端走.直至产生从小到大的元素排序结果.
3.代码演示
class Test{
//程序入口
public static void main(String[] args){
int[] arr = {9 , 8 , 7 , 6 , 5 , 4} ;
bubbleSort(arr); //调用冒泡排序
System.out.println("冒泡排序后:");
printArray(arr); //调用遍历数组
}
//冒泡排序
public static void bubbleSort(int[] arr){
for(int x = 0 ; x < arr.length-1 ; x ++){ //比较次数,数组长度-1是为了防止角标越界
for(int y = 0 ; y < arr.length-1-x; y ++){
//判断,并使用第三方变量将元素大的后置
if(arr[ y ] > arr[ y + 1 ]){
int temp = arr[ y ] ;
arr[ y ] = arr[ y + 1 ] ;
arr[ y + 1 ] = temp ;
}
}
}
}
//遍历数组
public static void printArray(int[] arr){
System.out.print("[") ;
for(int x = 0 ; x < arr.length ; x ++ ){
if( x == arr.length-1){
System.out.println(arr[x] + "]") ;
}else{
System.out.print(arr[x] + ", ") ;
}
}
}
}
4.运行结果