專案使用過程中,要求得到一天氣溫的最大值時間。傳進來的是所有天數按時間排序bigdecimal陣列,因為每一天資料較小,採用比較簡單的氣泡排序。
氣泡排序,考慮到,最大的數在與最後那個位置的數交換之前不會被交換。
故最後一次與最後那個位置數交換的數便是最大數,記錄下他的位置
如果整個過程沒有出現與最後乙個數交換,說明最後乙個位置的數是最大數
同理得到最小值位置
這是乙個簡單的demo
public static void main(string args)
int start = 0;
int end = histdata.length-1;
int maxtemp = -1;
int mintemp = -1;
bigdecimal temp;
for (int m = start; m <= end; m++)
if(m == start)
temp = histdata[m];
histdata[m] = histdata[n];
histdata[n] = temp;
":"+histdata[n]+" ");}}
}maxtemp = maxtemp==-1?5:maxtemp;
mintemp = mintemp==-1?0:mintemp;
system.out.println("maxposition"+maxtemp);
system.out.println("minposition"+mintemp);
}當然了,這裡並沒有考慮到最大值、最小值重複的問題,因為天氣記錄裡的最大值、最小值時間,我只需要任意乙個都可以。
同時得到最大最小值的最優演算法
首先,我們將一對輸入元素進行比較,然後把較小的值與最小值比較,較大值與最大值比較。這樣,每兩個元素共需3次比較。如果n是奇數,就把最大最小值的初值都設為第乙個元素的值,然後成對處理剩下的元素 如果n是偶數,則先比較前兩個元素,決定最大最小值的初值,然後成對處理剩下的元素。include stdafx...
同時找最大最小值
題目定義 給定乙個大小為n的陣列,無序,找到其中的最大值和最小值,要求元素間的比較次數盡可能少。這道題出自 演算法導論 創新工場2016校招筆試也考了這道題。以下摘自 演算法導論 事實上,我們只需要最多3 n 2 次比較就可以同時找到最小值和最大值。具體的方法是記錄已知的最大值和最小值,然後對輸入元...
同時尋找序列的最大最小值
問題描述 給定乙個長度為n n 2 的無序正整數序列ary,要求同時找到其中最大和最小值元素,並返回其和。分析 將最大值max和最小值min看成一對 mix,min 每次從序列中成對地取出兩個元素,將其中較小者與min比較並更新,將其中較大者與max必將並更新,這樣處理每一對元素只需要3次比較,整個...