㈠ 數據結構 選擇排序找最大值和最小值
您好,您可以用雙端堆。
只有十萬個數據而已,數據量並不大。
不管是雙端堆、紅黑樹、還是採用兩個堆(一個最大堆一個最小堆),效率相差沒多少。
建樹或建堆的復雜度都是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