0

私はJavaの初心者で、バブルソートを使用して整数配列の最大数を見つけるのに問題があります

これが私のプログラムの方法です:

import java.util.Scanner;
class Bubblesorting
{
    Scanner sc=new Scanner(System.in);
    void ascendingOrder()
    {
        int[] no=new int[10];
        System.out.println("ENTER 10 NUMBERS");
        for(int i=0;i<no.length;i++)
        {
            no[i]=sc.nextInt();
            for(int j=0;j<no.length;j++)
            {
                for(int k=j;k<no.length-1;k++)
                {
                    if(no[j]<no[k+1])
                    {
                        int t=no[k+1];
                        no[k+1]=no[j];
                        no[j]=t;
                    }
                }
            }
        }
        System.out.println(no[no.length]);
    }
}
4

2 に答える 2

2

最大数を取得するために配列をソートする必要はありません。これまでに見つかった最大値を更新する配列を 1 回反復するだけです。何かのようなもの:

import java.util.Scanner;
class Bubblesorting
{
    Scanner sc=new Scanner(System.in);
    void ascendingOrder()
    {
        int[] no=new int[10];
        System.out.println("ENTER 10 NUMBERS");
        for(int i=0;i<no.length;i++)
        {
            no[i]=sc.nextInt();
        }
        int maxv = no[0];
        for (int i =0;i<10;++i) {
            if (no[i] > maxv) {
                maxv = no[i];
            }
        }
        System.out.println(maxv);
    }
}

それでも、最初に配列をソートする必要があると主張する場合は、読み取りをソートロジックから分離してください。最初にすべての数値を読み取ってから、配列全体をソートする必要があります。また、ほとんどのプログラミング言語の配列のインデックスは 0 であるため、no の有効なインデックスは0to でno.length-1あるため、System.out.println(no[no.length - 1]);代わりにSystem.out.println(no[no.length]);.

于 2013-09-26T14:02:18.673 に答える