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]+"\t");
		}
		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;
            }
        }
        
        
    }
}

 

posted on 2020-06-18 15:55  AlexLiuF  阅读(187)  评论(0编辑  收藏  举报