Rumah > Java > javaTutorial > teks badan

Bagaimana untuk menyusun tatasusunan dari kecil ke besar dalam JAVA

WBOY
Lepaskan: 2023-05-07 20:49:06
ke hadapan
2596 orang telah melayarinya

Isih cepat

Isih cepat ialah algoritma pengisihan yang agak cekap Ia menggunakan idea "bahagi dan takluk" untuk mencapai pengisihan melalui berbilang perbandingan dan pertukaran Dalam satu pas pengisihan, data yang akan menjadi diisih dibahagikan kepada Dua bahagian bebas, susun dua bahagian supaya semua data dalam satu bahagian adalah lebih kecil daripada bahagian yang lain, dan kemudian teruskan secara rekursif kedua-dua bahagian, dan akhirnya mencapai semua data dalam susunan.

public static void quickSort(int[] arry,int left,int right){
        //运行判断,如果左边索引大于右边是不合法的,直接return结束此方法
        if(left>right){
            return;
        }
        //定义变量保存基准数(第一次进入方法最左边的数字下标为0)
        int base = arry[left];
        //定义变量i,指向最左边
        int i = left;
        //定义j ,指向最右边(第一次进入方法最右边数字下标为数组的长度减1)
        int j = right;
        //当i和j不相遇的时候,再循环中进行检索
        while(i!=j){
            //先由j从右往左检索比基准数小的,如果检索到比基准数小的就停下。
            //如果检索到比基准数大的或者相等的就停下
            while(arry[j]>=base && i<j){
                j--; //j从右往左检索
            }
            while(arry[i]<=base && i<j){
                i++; //i从左往右检索
            }
            //代码走到这里i停下,j也停下,然后交换i和j位置的元素
            int tem = arry[i];
            arry[i] = arry[j];
            arry[j] = tem;
        }
        //如果上面while条件不成立就会跳出这个循环,往下执行
        //如果这个条件不成立就说明 i和j相遇了
        //如果i和j相遇了,就交换基准数这个元素和相遇位置的元素
        //把相遇元素的值赋给基准数这个位置的元素
        arry[left] = arry[i];
        //把基准数赋给相遇位置的元素
        arry[i] = base;
        //基准数在这里递归就为了左边的数比它小,右边的数比它大
        //排序基准数的左边
        quickSort(arry,left,i-1);
        //排右边
        quickSort(arry,j+1,right);
    }
 
    public static void main(String[] args) {
        int[] arry = {11,81,71,61,10,42,33,24,99};
        System.out.println("arry排序前:"+Arrays.toString(arry));
        quickSort(arry,0, arry.length-1);
        System.out.println("arry排序后:"+Arrays.toString(arry));
    }
Salin selepas log masuk

Isih buih

  • Idea isihan buih: Diberi tatasusunan, susun tatasusunan dalam tertib menaik (menurun).

  • Bandingkan elemen bersebelahan dalam tatasusunan dari hadapan ke belakang Jika elemen sebelumnya lebih besar daripada elemen terakhir, tukar dan elemen terbesar selepas satu perjalanan Tepat di. hujung tatasusunan.

  • Ikuti proses di atas sehingga semua elemen dalam tatasusunan disusun.

public static void main(String[] args) {
        int[] arr = {18,13,50,15,4,17,18};
 
        System.out.println("arr的排序前:\n18  13  50  15  4  17  18 ");
 
        int temp  = 0 ;
        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]){
                    //条件成立 交换位置
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
 
        }
        System.out.println("arr排序后:");
 
        for(int i = 0; i<arr.length; i++){
 
            System.out.print(arr[i]+"\t");
        }
    }
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk menyusun tatasusunan dari kecil ke besar dalam JAVA. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan