2015-07-13 42 views
1

冒泡排序写一个程序读取5个数字到一个数组并打印最多且第二最大数量以及它们在该数组中现在的位置是其在阵列中的位置。定位第一第二最大数目,并使用在Java

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"); 

    } 
} 

现在打印自己的位置我一定要遵循另一种排序方法?或者是否可以使用气泡分类?

回答

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]); 

    } 
} 

希望它能帮助,

+0

thanx队友,这就是我正在寻找..真正appriciate。 –

0

您排序,所以你知道的位置是零和一个。

这看起来像一个家庭作业,我想知道,如果你误解了什么要求。 (也许在我的最后有一个误解。)如果是作业,请让你的老师澄清。

尝试找出最大和第二大,并没有整理他们的原始数组中的位置。

+0

由于是Bubble Sort算法,最大值将位于第4和第3位。 – antonioduarte

+0

现在的位置应该是没有排序位置..没错这就是我的任务的一种应用形式..为是小白和懒队友对不起:) –

+0

貌似user60312321用户输入的数字的位置是正确的关于您的排序将是最小的开始。关于你的排序有两个其他评论:1)可以减少比较次数。 2)气泡分类比较相邻元素。 – James

0

从空间复杂度和时间复杂度两方面来看,最有效的方法是有一个散列表(又名地图和字典),它将数值映射到它们的初始索引。

相关问题