k最大元素的GSL载体

时间:2014-12-10 15:05:50

标签: c sorting gsl

我试图得到长度为>的GSL向量v中k个最大元素的索引。 ķ。

代码如下:

uint8_t Indices[k];
gsl_sort_vector_largest_index(Indices, k, v);

但是,出于某种原因,只有Indices的第一个条目被填满。

知道我做错了吗?

编辑:根据要求,这是一个自包含的示例:

#include <gsl/gsl_matrix.h>
#include <gsl/gsl_sort_vector.h>
#include <stdio.h>

void main() {

uint8_t k = 3;
gsl_vector * v;
v = gsl_vector_alloc(10);
gsl_vector_set_all(v,.1);
gsl_vector_set(v, 7, .5); gsl_vector_set(v, 2, .3); gsl_vector_set(v, 4, .2);

uint8_t Indices[k];
gsl_sort_vector_largest_index(Indices, k, v);
for(uint8_t i=0;i<k;i++)
    printf("%u\n",Indices[i]);

gsl_vector_free(v);
}

当我期待7 0 0

时,这会将7 2 4作为输出

1 个答案:

答案 0 :(得分:0)

根据the documentationgsl_sort_vector_largest_indexsize_t *作为其第一个参数,而不是uint_8 *

将您的代码更改为使用size_t代替uint_8,您应该好好去。

相关问题