2016-11-12 73 views
0

如何找到數組中最大值的位置,我知道最大值,但是我需要知道它的位置。陣列中元素的位置最大包含

class maximumofarray 
{ 

    public static void main(String[] args) 
    { 
    double maximum; 
    int i; 
    double [] a={1.5,2.3,4.2,-9.4,2.0,12.9,-5.0,12.9,-0.1,-15.0,0.0}; 
    maximum=a[0]; 
    for (i = 1; i <= 10; i++) 
     { 
     if (a[i] > maximum) 
     { 
     maximum = a[i]; 
     } 

     } 
    System.out.println("The maximum element is "+maximum); 

    } 
} 

回答

2

您需要按照下面的步驟:

(1)中聲明瞭一個多變量(maxLocation),這是需要收集的位置maximum

(2)當你正在分配最大(即,a[i] > maximum),也收集最大元件的位置作爲maxLocation

下面的代碼是下式給出:

double maximum; 
int i; 
int maxLocation =0; 
double [] a={1.5,2.3,4.2,-9.4,2.0,12.9,-5.0,12.9,-0.1,-15.0,0.0}; 
maximum=a[0]; 
for (i = 1; i <= 10; i++) 
    { 
    if (a[i] > maximum) 
    { 
     maximum = a[i]; //assign maximum value 
     maxLocation = i; //Also, collect the location as well to maxLocation 
    } 

    } 
System.out.println("The maximum element is "+maximum); 
System.out.println("The maximum element is "+maxLocation); 

} 
+0

一個修改:在開始時分配maxLocation = 0,因爲如果一個[0]將是數組的最大值,那麼在最後一行將是print null值。 –

+0

謝謝,開始時將maxLocation初始化爲零 – developer

1

使用第二個變量...

double maximum; 
int locationOfMaximum; 
int i; 
double [] a={1.5,2.3,4.2,-9.4,2.0,12.9,-5.0,12.9,-0.1,-15.0,0.0}; 
maximum=a[0]; 
locationOfMaximum = 0; 
for (i = 1; i <= 10; i++) 
    { 
    if (a[i] > maximum) 
    { 
    maximum = a[i]; 
    locationOfMaximum = i; 
    } 

    } 
System.out.println("The maximum element is "+maximum+"; it appears at index "+locationOfMaximum); 

爲了記錄在案,有一些更多的變化,我建議,使代碼更易讀...

double [] a={1.5,2.3,4.2,-9.4,2.0,12.9,-5.0,12.9,-0.1,-15.0,0.0}; 

double maximum = Double.MIN_VALUE; // Or Double maximum = null; 
int locationOfMaximum = -1; 
for (int i = 0; i < a.length; i++) { 
    if (a[i] > maximum) { 
    maximum = a[i]; 
    locationOfMaximum = i; 
    } 

} 
System.out.println("The maximum element is "+maximum+"; it appears at index "+locationOfMaximum); 
0

您可以使用utilit方法Arrays.sort(a)對數組進行排序。那麼最大元素將停留在緯度指數。

double maximum; 
int i; 
double [] a={1.5,2.3,4.2,-9.4,2.0,12.9,-5.0,12.9,-0.1,-15.0,0.0}; 

Arrays.sort(a); 

System.out.println("The maximum element is "+a[a.length-1]); 
+0

這非常無效,還有其他一些方法比排序更有效。 –

+1

@KamilGryboś所以你試圖說這個在JDK中存在的實用方法是無效的,並且性能較差。這個內部使用的「Dual-Pivot Quicksort」你可以隨時檢查性能給出時間戳並檢查代碼花費的時間。當你的jar中已經有方法時,我們不應該使用不必要的代碼行。 –

+0

在這方面。不全球。 –