有时候我们需要寻找数组的前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

浙公网安备 33010602011771号