java - 在java中获取排序数组的原始索引(Android)

标签 java android arrays sorting for-loop

在我的代码中,我现在得到了一个要循环并计算一些值的元素列表:

        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);

但是我如何取回索引呢?我必须使最小值指向它的大小

最佳答案

最好的方法是迭代ratioArray并且不要使用Arrays.sort(ratioArray);

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

    } 

上面的代码加上这个之后,

        int min = ratioArray[0];
        int minindex;
        for (int i = 0; i < ratioArray.length; i++) {
            if(min > ratioArray[i]) {
 min = ratioArray[i];
                minindex = i;
            }
        }

你会得到你的 minindex

关于java - 在java中获取排序数组的原始索引(Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8729842/

相关文章:

java - 弄乱了我的应用程序,现在加载时崩溃了。不明白catlog中的错误

java - 如何使用 Java 在 HDFS 中创建和填充 Parquet 文件?

android - 纯 NDK Android 应用程序是否有 .dex 文件?

arrays - 如何在 bash 中拒绝空数组索引

java - 如何在一对多 hibernate 中向现有数据插入或添加新行

java - writeInt(Integer) 覆盖零

java - 过滤查询 Firestore 中的数据?

android - 有什么方法可以将新的 DrawerLayout 与 ActionBarSharlock 一起使用吗?

ruby - 从另一个符号数组填充一个新数组

arrays - 使用 Elixir 绘制数组的深度映射