氣泡排序同時得到最大 最小值位置

2021-08-04 22:33:36 字數 840 閱讀 3852

專案使用過程中,要求得到一天氣溫的最大值時間。傳進來的是所有天數按時間排序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次比較,整個...