基本介绍
冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移到后面,就像水底下的气泡一样往上冒
public static void bubbleSort(int[] arr){
for(int i=0;i<arr.length-1;i++){ //冒泡次数
//冒泡步骤
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
冒泡排序的优化
如果在某一次冒泡排序过程中,没有交换元素,则说明该数组已经有序。
public static void bubbleSort(int[] arr){
//如果在某一次冒泡排序过程中,没有交换元素,则说明该数组已经有序
int temp=0;
boolean flag=true;//标志是否完成排序,默认完成
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
flag=false;//假如在排序过程中进入过if条件判断,这说明排序还未完成
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
if(flag){
break;
}else{
flag=true;//重置flag!!!进行下次判断
}
}
}
注意:在使用中,也可以将flag放在第一层循环中,就不需要重置了,但是每循环一次将开辟一次新的栈空间。