簡體   English   中英

使用 java 中的子程序對數組進行升序排序

[英]Sort an array in ascending order by using a subroutine in java

我需要創建一個從升序對數組進行排序的子例程,並且我想在舊數組下顯示新排序的數組以及其中的最大值和最小值。

到目前為止,我只提出了這段代碼,其中有很多錯誤

PS 我不想使用 array.sort() function。

    public class acsendingarrays {

        public static void main(String[] args) {
            int i;
            int[] tab=new int[30];
            for(i=0;i<tab.length;i++)tab[i]=(int)(Math.random()*1001);
            for(i=0;i<tab.length;i++)System.out.print(tab[i]+" ");

            for ( i = 0; i < tab.length; i++) 
             {

             for (int j = i; j < tab.length; j++) {
                 sortAsc(int[i])


             }

             }
        }

        static int sortAsc(int tab[]) {
            int temp;
            int max = 0, min = 1000;
            int i;

            for (i = 0; i < tab.length; i++) {

                for (int j = i; j < tab.length; j++) {
                    if (tab[i] > tab[j]) {
                        temp = tab[i];
                        tab[i] = tab[j];
                        tab[j] = temp;
                    }
                    if (tab[i] > max) {
                        max = tab[i];
                    }
                    if (tab[i] < min) {
                        min = tab[i];
                    }
                }

            }
            return tab[i];
        }
    }

我不知道你為什么需要這些最大和最小變量,但試試這個代碼:

public class acsendingarrays {
    public static void main(String[] args) {
    int i;
    int[] tab=new int[30];
    for(i=0;i<tab.length;i++)tab[i]=(int)(Math.random()*1001);
    for(i=0;i<tab.length;i++)System.out.print(tab[i]+" ");
    System.out.println("");
    sortAsc(tab);
    for(i=0; i<tab.length; i++)System.out.print(tab[i] + " ");
}




static void sortAsc(int tab[]) { 
int temp;
int max=0 , min = 1000;
int i;

for ( i = 0; i < tab.length; i++) 
 {

 for (int j = i; j < tab.length; j++) { 
     if (tab[i] > tab[j]) {
         temp = tab[i];
         tab[i] = tab[j];
         tab[j] = temp;
     }
     if (tab[i] > max) { 
        max = tab[i];
     }
     if (tab[i] < min) {
        min = tab[i];
     }
 }


}
}

}

您犯的第一個錯誤是 class 名稱。 請務必更改您的 class 名稱。 接下來,您必須將整個數組選項卡傳遞給 sortAsc() 方法。 您無需檢查由 j 索引的循環中的最大值和最小值,因為這往往會進行大量重復比較。 所以移動取決於由 i 索引的循環。 如果你是初學者,沒關系。 但是如果你在大學,強烈建議你學習排序方法並開始使用 sort() 方法。 僅在必要時使用 static 方法。

import java.lang.Math;
import java.util.Arrays;

public class AscendingArrays {
    public static void main(String[] args) {
        int tab[] = new int[30];

        for(int i = 0; i < tab.length; i++) 
            tab[i] = (int)(Math.random()*1001);

        System.out.println(Arrays.toString(tab));

        AscendingArrays a = new AscendingArrays();
        a.sortAsc(tab);

        System.out.println(Arrays.toString(tab));
    }
    public void sortAsc(int[] tab) {
        int max = 0, min = 10000;
        for(int i = 0; i < tab.length; i++) {
            for(int j = i + 1; j < tab.length; j++) {
                if(tab[i] > tab[j]) {
                    tab[i] ^= tab[j];
                    tab[j] ^= tab[i];
                    tab[i] ^= tab[j];
                }

            }
            if(max < tab[i]) max = tab[i];
            if(min > tab[i]) min = tab[i];
        }
        System.out.println("Largest :" + max);
        System.out.println("Smallest:" + min);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM