設計思想:
在vb中數姐最大維數是60,所以我們通過錯誤捕捉來處理這個問題,在這裡我們用到ubound函式
public function arrayrange(marray as variant) as integer
dim i as integer
dim ret as integer
dim errf as boolean
errf = false
on error goto errhandle
'判斷代入的引數是否為陣列
if not isarray(marray) then
arrayrange = -1
exit function
end if
'vb中陣列最大為60
for i = 1 to 60
'用ubound函式判斷某一維的上界,如果大陣列的實際維數時產生超出範圍錯誤,
' 此時我們通過resume next 來捕捉錯這個錯誤
ret = ubound(marray, i)
if errf then exit for
next i
'最後返回
arrayrange = ret
exit function
errhandle:
ret = i - 1
errf = true
resume next
end function
陣列的維數
作為引數或者在二維陣列的宣告時,往往可以省略第一維,但是不可以省略第二維,或者是更高的維數。這是由於編譯器的原理所限制的。a i j a 0 0 i sizeof int n sizeof int 此時 n為二維的維數 由此可以看出在定義二維陣列或更高維陣列時,對其進行初始化可以省略第一維引數,編譯...
求陣列第K大的數
問題 有乙個大小為n的陣列a 0,1,2,n 1 求其中第k大的數。我們先分析原問題 有乙個大小為 n的陣列a 0,1,2,n 1 求其中第k大的數。我們先取特例,令k 1,那麼就是取最大的數,只要掃瞄一遍陣列就可以確定該值,如果k 2,則掃瞄兩邊陣列就可以確定第二大的數,依此類推下去,時間複雜度是...
求陣列中第K大的數
本題的的陣列是可以包含重複元素的,且要求時間複雜度控制在o n 解題思路 陣列中第k大的數等價於排序陣列中第n k個數,直觀的想法是將陣列排序後取第n k個數即可,但是最快的排序演算法時間複雜度也是o nlogn 可以參考快速排序一次劃分的思想,將時間複雜度降低為o n 一次劃分可以講陣列分為三部分...