回答
如果數組未經排序,則必須執行線性搜索以查找每個數組中的最大值。如果數組爲排序,那麼只需從每個數組中取第一個或最後一個元素(取決於排序順序)。
如果你的數組已經排序,你可以跳到最大的最後。
如果你的數組沒有排序,你將不得不遍歷整個列表,追蹤到目前爲止看到的最大值。
如果你仔細想想,如果你想找到最高值,你必須檢查所有的值。這是沒有辦法的(除非數組被排序,這很容易 - 只要每個數組的最後(或者如果按降序排序)取最大值)。例如:
int highest = array1[i]; // note: don't do this if the array could be empty
for(int i = 0; i < array1.length; i++) {
if(highest<array1[i]) highest = array1[i];
}
for(int i = 0; i < array2.length; i++) {
if(highest<array2[i]) highest = array2[i];
}
// highest is now the highest
我們可以減少您的操作次數或比較3(n/2-2)。來自2n(n用於使用線性搜索查找最大數量,n用於最小值)。假設我們有一組元素[1,9,8,7,4,5,1,4,7,8,1,6]。 將第一個元素設置爲Max = 1,將下一個設置爲Min = 9,現在將同時接下來的兩個元素進行比較,然後與Max和Min進行比較。所以一次迭代只需要3次比較,但數組減少到n/2。因此比較的總數將是3(n/2-2)。 實施例:
Max=arr[1];
Min=arr[2];
for(int i=3; i< arr.length;i=i+2)
{
if(arr[i]>arr[i+1])
{
if(Max < arr[i])
Max=arr[i];
if(Min > arr[i+1])
Min=arr[i+1];
}
else
{
if(Max < arr[i+1])
Max=arr[i+1];
if(Min > arr[i])
Min=arr[i];
}
}
實際上,對於10個元素n-1(10-1 = 9)的未排序數組,需要進行比較。在你的情況3(n/2-2),即3(10/2-2)= 9的比較中,兩者都是相等的,對於20個元素數組,你的方法需要24次比較,它有多優越? – Ironluca 2014-12-12 10:33:53
這裏我給用於從int數組求最大值的簡單代碼。 我的邏輯是: - 數組是int [] arr = {8,5,6,7,3,4,9}。首先取一個臨時變量,並將第一個值寫入該變量,並假定這是最大值,即tempValue = arr [0]。並在for循環中取一個if塊並檢查第二個值是否大於第一個值。同樣,如果塊將自動檢查其餘值。最後,最大值將分配給臨時變量,並得到結果在給定數組中最大值爲9。
公共類MaxIntArray {
public static void main(String[] args){
int[] arr={8,5,6,7,3,4,9};
int tempValue=arr[0];
for(int i=0;i<arr.length;i++){
if(arr[i]>tempValue){
tempValue=arr[i];
}
}
System.out.println("\n Maximum Value in the Given Array = "+tempValue);
}
}
輸出是: - 在給定的數組最大值= 9
該問題關注「(超過百萬條目)」的案例,它如何考慮到這一方面? – emecas 2014-12-25 17:13:51
@emecas,arr.length將檢查數組中的所有條目。我已經給出了未分類數組的邏輯。即需要像線性搜索一樣逐個檢查每個元素。 – 2014-12-26 16:02:15
在這裏,我給簡單的代碼,用於從求最大值int數組。我的邏輯是: - 數組是int [] arr = {8,5,6,7,3,4,9}。首先獲取一個臨時變量,並將第一個值放入該變量中,並假定這是最大值,即tempValue = arr [0]。並在for循環中取一個if塊並檢查第二個值是否大於第一個值。同樣,如果塊將自動檢查其餘值。最後,最大值將分配給臨時變量,並得到結果在給定數組中最大值爲9。
公共類MaxIntArray {
public static void main(String[] args){
int[] arr={8,5,6,7,3,4,9};
int tempValue=arr[0];
for(int i=0;i<arr.length;i++){
if(arr[i]>tempValue){
tempValue=arr[i];
}
}
System.out.println("\n Maximum Value in the Given Array = "+tempValue);
}
}
//輸出是: - 在給定的數組= 9
對於無序陣列的最大值,則可以與初始化的最大數量可變值0(給定數組由正值構成),然後迭代數組中的所有項目,將每次迭代中的較大數字分配給最大變量。
int[] values = {8,3,7,10,5};
max = 0;
for(int i = 0;i < values.length;i++){
if(values[i] > max){
max = values[i];
}
}
System.out.println(max);
- 1. 查找整數數組中的最大位數
- 2. 查找數組中每個整數的最大小數點
- 3. 在java中查找最大數組
- 4. 查找數組中的最大分數
- 5. 查找數組中的最大值(整數集合)
- 6. PYTHON - 查找最大每10個整數的數組中的
- 7. 如何在Perl中查找整數數組中的最大值和最小值?
- 8. 在數組遞歸方法中查找最大整型值
- 9. 從PHP中的一組變量中查找最大整數?
- 10. 查找數組中的最大值
- 11. 查找數組中的最大值
- 12. Java:查找數組中的最大值
- 13. 在數組中找到第K個最大整數
- 14. 在大小爲N的未排序數組中查找K個最小整數
- 15. 若要查找整數數組中前3個最大重複數字
- 16. 算法在整數數組中的最大整數
- 17. 查找java數組中的最小/最大數
- 18. 查找數組中最大的最大列表
- 19. 如何查找數組中整數的ADT堆棧中的最大值
- 20. 查找整數數組
- 21. 查找整數數組中給定數值的最小集合
- 22. 如何在Java中使用數組查找最大數字?
- 23. 查找數組數組中最大差異的算法
- 24. PHP - 在多維數組中查找最小/最大值
- 25. 如何查找數組的最大值?
- 26. 查找數組的最大值
- 27. 查找和分組最大數據
- 28. 通過遞歸找到數組中的最大正整數
- 29. 找到在整數數組最大的產品
- 30. 查找數組最大最接近給定數數
遍歷每個數組,跟蹤到目前爲止的最大值。這個問題有一個竅門嗎?你必須至少看看每個值才能找到最大值。 – hughdbrown 2009-08-29 03:24:49
我必須說,用戶名「rachel」最近出現了多少種變體,這是顯着的。 :)更嚴重的說明,這裏是一個非常相關的問題:http://stackoverflow.com/questions/1042507/finding-smallest-value-in-an-array-most-efficiently – agorenst 2009-08-29 03:25:37
@Agor - 三個用戶命名爲'雷切爾'今天已經簽名...奇怪。 – 2009-08-29 03:38:47