を取得し、私はをループする要素のリストを持って、いくつかの値を計算します。今、私のコードでは、Javaでソートされた配列の元のインデックス(アンドロイド)
double targetRatio = Math.min((double)w/h, (double)h/w);//height & width of the screen
List<Size> sizes //populated with supported height and width
double ratioArray[];
int i;
for (i = 0; i <= sizes.size(); i++)
{
double ratio = Math.min((double)sizes.get(i).width/sizes.get(i).height, (double)sizes.get(i).height/sizes.get(i).width);
ratioArray[i] = Math.abs(ratio - targetRatio);
// Math.min((double)sizes.get(i).width/w, (double)w/sizes.get(i).width);
// Math.min((double)h/sizes.get(i).height, (double)sizes.get(i).height/h);
//sizes.get(i).width
//sizes.get(i).height
}
ratioArrayで低い値を[I ]私が得たよりよい比;今、私は最高の比率を見つけるで立ち往生していますが、私はこれを行うことができます:
Arrays.sort(ratioArray);
たが、その後をどのように私は戻ってインデックスを得るのですか?私は最小値をそのサイズにする必要があります
計算中にminを直接行うのではなく、2回反復する理由はどこですか? この二重反復の唯一の理由は、後で再利用できるようにratioArrayを保持することです。 このアプローチと質問自体については、最小の比率があなたが得たいものである理由は不明です... – fkerber
はい、それは計算中に行うことができますが、私は理解と簡潔さを高めるためにこの方法を投稿しました...最適化は、まずあなたが望むものを達成するために必要な後半です。 –
はい、これは一般的に正しいです。おそらく、それはあなたの答えの中で私を邪魔しました。 – fkerber