java排序,升序排列和降序排列

给你n个数,让你将它们排序,有两种排序的方式,当m=0时,升序排列,当m=1时,降序排列

运行效果如下:

img

img

代码如下:

import java.util.Scanner;

public class Test {
    
    public static void sort(int[] arr,int flag){
        int i,j,t;
        for(i=0;i<arr.length-1;i++){
            for(j=0;j<arr.length-1-i;j++){
                if( (flag ==0 && arr[j]>arr[j+1]) || (flag==1 && arr[j]<arr[j+1])  ){
                    t = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = t;
                }
            }
        }
    }
    
    
    
    public static void main(String[] args ) {
        System.out.print("please input n:");
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        System.out.println("请输入"+n+"个数:");
        
        for(int i=0;i<n;i++)
            arr[i] = sc.nextInt();
        
        //请输入排序方式
        System.out.println("请选择排序方式:0升序,1降序");
        int flag = sc.nextInt();
        sort(arr,flag);
        //输出
        System.out.println("排序后的元素");
        for(int i=0;i<n;i++)
            System.out.print(arr[i]+" ");
        
    }

}


25行if(a[j]>a[j+1]){就是升序排序,改为if(a[j]<a[j+1]){就是降序排序:


public class BubbleSort {
    
    int a[];
    public int[] getA(){
        return a;
    }
    public BubbleSort() {
        a = new int[]{8,19,2,3,100,99,1000,888,-1,0};
    }
    public BubbleSort(int a[]) {
        this.a = a;
    }
    //冒泡排序
    public void sort(){
        int t=0,kk=0,len=a.length;
        //外循环控制循环的趟数
        for(int i=0;i<len-1;i++){
            //内循环控制每一趟的次数
            kk=0;
            for(int j=0;j<len-i-1;j++){
                //打印每循环一次后数据的变化
                kk++;
//                System.out.println("第"+(i+1)+"趟的第"+kk+"次");
                if(a[j]>a[j+1]){
                    t=a[j];
                    a[j]=a[j+1];
                    a[j+1]=t;
                }
//                print();
            }
        }
        System.out.println("排序后顺序如下:");
        print();
    }
    public void print(){
        
        for (int e : a) {
            System.out.print(e+"\t");
        }
        System.out.println("");
    }
    public static void main(String[] args) {
        BubbleSort bubbleSort = new BubbleSort();
        System.out.println("排序前顺序如下:");
        bubbleSort.print();
        //排序
        long start = System.currentTimeMillis();
        bubbleSort.sort();
        long end = System.currentTimeMillis()-start;
        System.out.println("排序用时:"+end +"毫秒");
    }
}

import java.util.*;

public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //输入个数n
        int n = scanner.nextInt();
        //输入具体的n个数
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            list.add(scanner.nextInt());
        }

        Test test = new Test();
        //升序排列
        test.sort(list, 0);
        System.out.println(list);
        //降序排列
        test.sort(list, 1);
        System.out.println(list);
    }

    /**
     * 排序
     *
     * @param list 要排序的数据
     * @param m    当m=0时,升序排列,当m=1时,降序排列
     */
    public void sort(List<Integer> list, int m) {
        switch (m) {
            case 0://升序
                list.sort(new Comparator<Integer>() {
                    @Override
                    public int compare(Integer o1, Integer o2) {
                        return o1.compareTo(o2);
                    }
                });
                break;
            case 1://降序
                list.sort(new Comparator<Integer>() {
                    @Override
                    public int compare(Integer o1, Integer o2) {
                        return o2.compareTo(o1);
                    }
                });
                break;
            default://不变
                break;
        }
    }
}