ホームページ  >  記事  >  Java  >  JAVAで配列を小さいものから大きいものに並べ替える方法

JAVAで配列を小さいものから大きいものに並べ替える方法

WBOY
WBOY転載
2023-05-07 20:49:062526ブラウズ

クイック ソート

クイック ソートは、比較的効率的な並べ替えアルゴリズムです。「分割統治」の考え方を採用し、複数の比較と交換を通じて並べ替えを実現します。1 回の並べ替えパスで、データはソート対象を 2 つの独立した部分に分割し、一方の部分のすべてのデータが他方の部分よりも小さくなるように 2 つの部分をソートし、その後 2 つの部分を再帰的にソートし続け、最終的にすべてのデータを順番に取得します。

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));
    }

バブル ソート

  • バブル ソートのアイデア: 配列を指定して、配列を昇順 (降順) に並べ替えます。

  • 配列内の隣接する要素を前から後ろに比較します。前の要素が次の要素より大きい場合は、を交換します。1 回の移動後の最大の要素配列の終わり。

  • 配列内のすべての要素が配置されるまで、上記のプロセスに従います。

うわー

以上がJAVAで配列を小さいものから大きいものに並べ替える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。