在java

时间:2015-07-13 03:34:03

标签: java arrays sorting

编写一个程序,将5个数字读入数组,并在该数组中打印最大数字和第2个数字及其位置。

import static java.lang.System.*;
import java.util.*;
public class bubble sort
{
    public static void main(String[] args)
    {
        int i,j,temp;
        Scanner input = new Scanner(in);
        int array[]=new int [5];
        for(i=0;i<array.length;i++)
        {
            out.println("please input an integer");
            array[i]=input.nextInt();
        }
        for(i=0;i<array.length;i++)
        {
            for(j=0;j<array.length;j++)
            {
                if(array[i]>array[j])
                {
                    temp=array[i];
                    array[i]=array[j];
                    array[j]=temp;
                }
            }
        }
           out.print(array[0]+" is the largest number");
           out.println(array[1]+" is the 2nd largest number");

    }
}

现在打印他们的位置我必须遵循另一种排序方法吗?或者是否可以使用冒泡分类?

3 个答案:

答案 0 :(得分:0)

你排序了,所以你知道位置是零和一。

这看起来像是家庭作业,我想知道你是否误解了所要求的内容。 (也许在我的结尾有一个误解。)如果是家庭作业,请让老师澄清。

尝试找到最大和第二大,以及它们在原始数组中的位置而不进行排序。

答案 1 :(得分:0)

位置[0]和[1]将存储最小的数字。否则,您正在寻找反向冒泡排序,而不是您的代码。

现在,如果我得到你的问题,你可以创建两个数组。一个用于数字,一个用于索引。您对数组进行排序以查找数字数组,但对索引应用相同的更改。因此,最后您将对两个数组进行排序,并且可以简单地显示每个数组的位置[4]和[3](不是一个好的性能方法):

import static java.lang.System.*;
import java.util.*;
public class bubble sort
{
    public static void main(String[] args)
    {
        int i,j,temp;
        Scanner input = new Scanner(in);
        int number_array[]=new int [5];
        int index_array[5] = {0, 1, 2, 3, 4};
        for(i=0;i<number_array.length;i++)
        {
            out.println("please input an integer");
            number_array[i]=input.nextInt();
        }
        for(i=0;i<number_array.length;i++)
        {
            for(j=0;j<number_array.length;j++)
            {
                if(number_array[i]>number_array[j])
                {
                    temp=number_array[i];
                    number_array[i]=number_array[j];
                    number_array[j]=temp;

                    temp=index_array[i];
                    index_array[i]=index_array[j];
                    index_array[j]=temp;
                }
            }
        }
           out.print(number_array[4]+" is the largest number with initial index "+index_array[4]);
           out.println(number_array[3]+" is the 2nd largest number with initial index "+index_array[3]);

    }
}

希望它有所帮助,

答案 2 :(得分:0)

在空间复杂性和时间复杂性方面,最有效的方法是使用哈希表(即地图和字典)将值映射到其初始索引。