package day9_01_array; /* * 定义一个函数接收一个整型数组arr, * 此函数功能用于给数组元素从大到小排序。并返回排序后数组。 */ public class SortAlgorithm { public static void main(String[] args){ int[] b = {8,9,5,4,6,7}; reverseOrder(b); } //将数组能够倒叙排列的函数,用的冒泡排序 static int[] reverseOrder(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+1]; arr[j+1] = arr[j]; arr[j] = temp; } } } for(int i=0;i<arr.length;i++){//遍历排序后的数组并且打印 System.out.print(arr[i]+" "); } return arr; } }
冒泡排序的优化
package day10_01_Review; import java.util.Arrays; /* * 冒泡排序及优化 */ public class BubbleSort { public static void main(String[] args){ int[] a ={1,2,3,5,4,6}; sort(a); } static void sort(int[] arry){ boolean judge = false; for(int i = 0;i<arry.length-1;i++){//表示排序进行了几轮 for(int j = 0;j<arry.length-1-i;j++){//每轮排了几次 if(arry[j]>arry[j+1]){//判断并且调换位置 int temp = arry[j]; arry[j] = arry[i]; arry[i] = temp; judge = true;//如果有一轮比较里面需要交换说明这轮排序没有结束,并且将judge赋值为true } } System.out.println("第"+(i+1)+"轮比较"); System.out.println(Arrays.toString(arry)); if(judge==false){//判断如果有一轮一次也没进行交换说明本轮已经完成排序 break; }else{//如果有排序,则judge已经变成了true为了下一轮准确判断是否进行交换位置,必须将judge初始化 judge = false; } } } }