冒泡排序(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放在第一层循环中,就不需要重置了,但是每循环一次将开辟一次新的栈空间。