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

您无需对数组进行排序即可获得其中的最大数量。只需在数组上迭代一次,更新到目前为止找到的最大值。就像是:

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 的有效索引是0tono.length-1所以你应该System.out.println(no[no.length - 1]);而不是System.out.println(no[no.length]);.

于 2013-09-26T14:02:18.673 回答
0

Your if condition should be check greater then condition like if(no[j]>no[k+1]).

And also do change in sysout

System.out.println(no[no.length-1]);

Your code should something like

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-1]);
        }
于 2013-09-26T14:06:52.810 回答