繁体   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