2015-07-13 48 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

從空間複雜度和時間複雜度兩方面來看,最有效的方法是有一個散列表(又名地圖和字典),它將數值映射到它們的初始索引。