㈠ 数据结构 选择排序找最大值和最小值
您好,您可以用双端堆。
只有十万个数据而已,数据量并不大。
不管是双端堆、红黑树、还是采用两个堆(一个最大堆一个最小堆),效率相差没多少。
建树或建堆的复杂度都是O(nlogn),等于排序的复杂度,并且删除都是O(logn)。
如果不用插入数据的话,可以用下面简单的方法
先对数组排序。
然后设置两个位置,int min = 0, max = n - 1;其中n为元素个数,分别表示最小值和最大值的位置。
获取最大值是ary[max],获取最小值是a[min]。
删除最大值是max--,删除最小值是min++。
初始化复杂度O(nlogn),查找和删除都是O(1)
㈡ 在matlab编程时,怎样取出矩阵的每行中的最小值
可以用如下的for循环
for i = 1 : size(a, 1)
minVaule(i) = min(a(i, :)); % 将每行当成一个行向量,取其最小值
end
也可以利用min命令的另外一种形式,直接取出矩阵的每行中的最小值:
举例如下:
min(a,[],2) % 求取每行的最小值
>>a=magic(5)
a =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
>> min(a,[],2) %求取每行的最小值
ans =
1
5
4
3
2
注:如果是求每列的最小值,可用
>> min(a,[],1) %max是按列求最小值,该写法相当于求每列的最小值
ans =
4 5 1 2 3