kevintototo  

有时候我们需要寻找数组的前k个大值并按照顺序输出,

在C语言可以通过快速排序等算法,快速求得,这里用matlab写了一个比较简单实用的程序(适用于数组长度不是特别大的情况)。

function [value idx]=findkmax(x,k)
value = zeros(1,k);
idx   = zeros(1,k);
m = min(x);
for j = 1:k
    [value(j) idx(j)] = max(x);
    x(idx(j))=m;
end

测试:

 [xs is]=findkmax([1 2 3 5 22 21],3)

xs =

    22    21     5


is =

     5     6     4

 

 

posted on 2014-03-28 17:05  kevintototo  阅读(1222)  评论(0)    收藏  举报