Maison > Java > javaDidacticiel > le corps du texte

Comment trier les tableaux de petit à grand en JAVA

WBOY
Libérer: 2023-05-07 20:49:06
avant
2596 Les gens l'ont consulté

Tri rapide

Le tri rapide est un algorithme de tri relativement efficace. Il adopte l'idée de "diviser pour régner" pour réaliser un tri grâce à de multiples comparaisons et échanges. En une seule passe de tri, les données à trier sont divisées en. deux parties indépendantes. Triez les deux parties de manière à ce que toutes les données d'une partie soient plus petites que l'autre, puis continuez à trier les deux parties de manière récursive jusqu'à ce que toutes les données soient ordonnées.

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));
    }
Copier après la connexion

Tri à bulles

  • Idée de tri à bulles : étant donné un tableau, triez le tableau par ordre croissant (décroissant).

  • Comparez les éléments adjacents du tableau d'avant en arrière Si l'élément précédent est plus grand que l'élément suivant, échangez Après un passage, le plus grand élément sera à la fin du tableau.

  • Suivez le processus ci-dessus dans l'ordre jusqu'à ce que tous les éléments du tableau soient disposés.

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");
        }
    }
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal