24小时热门版块排行榜    

查看: 465  |  回复: 2

wxyuan2014

铜虫 (小有名气)

[求助] 求一维数组最小值索引 已有2人参与

大家好,请问Java中有没有求数组最小值索引的函数呢,类似的在MATLAB中有w=find(n==min(n(0:99)))
回复此楼

» 猜你喜欢

必运动
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

FMStation

至尊木虫 (知名作家)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
wxyuan2014: 金币+5 2016-08-08 15:43:13
C Code:
#include<stdio.h>
int main(void)
{
    int i, j, size_A=2, size_A2=3;
    float A[2][3]= {{-1e300, 2, 3},{2,-1e300,5}}; /*NOTE: -1e300 outputs as -Inf*/
    int size_index=0;
    int rloc, cloc;
    float index[size_A*size_A2];

    for(j=0; j<size_A2; j++) /*Finds rows where values in each column are greater than -Inf. Also finds length of new linear matrix*/
    {
        for(i=0; i<size_A; i++)
            {
                if(A[j]>-1e300)
                {
                    cloc=j+1;
                    rloc=i+1;
            
         
            size_index++;
            index[1][size_index]= rloc;
            printf("col:%d\nrow:%d\nsize:%d\n", cloc, rloc, size_index);


                }printf("%d", index[1][size_index]);
            }
    }

    return 0;
}

http://cboard.cprogramming.com/c ... -find-function.html
2楼2016-08-08 14:16:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jianliu67

木虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
wxyuan2014: 金币+5 2016-08-09 15:54:08
看你追求什么了.

1. 如果追求效率, 你得自己写一段code, 循环整个数组, 得到最小值的同时保存它的index.
2. 如果只追求代码简洁好看, 可以这样写: int minIndex = list.indexOf(Collections.min(list)), 这里 <ArrayList>list 是你的数组.

The second one is exactly like the Matlab method you wanted, but it goes through the same list twice in the worst case scenario. The first method only goes through the list once so it's faster.
3楼2016-08-09 10:40:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wxyuan2014 的主题更新
信息提示
请填处理意见