VB中最快速的交換兩個陣列的元素

2021-06-28 21:50:28 字數 969 閱讀 2790

乙個陣列a,乙個陣列b,大小和型別都相同,現在要交換其中對應位置的元素,如何在vb中最快速。 

**如下

private declare function varptrarray lib "msvbvm50" alias "varptr" (ptr() as any) as long 

private declare sub copymemory lib "kernel32" alias "rtlmovememory" (lpdst as any, lpsrc as any, byval bytelength as long) 

private sub swap(a() as long, b() as long) 

dim safea              as long, safeb              as long 

dim addressa            as long, addressb          as long 

copymemory safea, byval varptrarray(a), 4          '得到指向a陣列safearray指標的指標 

copymemory safeb, byval varptrarray(b), 4          '得到指向b陣列safearray指標的指標 

safea = safea + 12                                  '偏移12個位元組為指向真陣列的指標 

safeb = safeb + 12 

copymemory addressa, byval safea, 4                '得到a陣列的「真陣列」的記憶體首位址 

copymemory byval safea, byval safeb, 4              '交換b陣列和a陣列對應的真陣列的記憶體首位址 

copymemory byval safeb, addressa, 4 

end sub

兩個數的交換

一般思路 建立乙個臨時變數,以這個臨時變數為中間變數,利用賦值來完成兩個數的內容的相互交換。如下 include int main 優化方案 1.上述方法中需要另外建立乙個變數,略微有些麻煩,若是要求不能建立臨時變數,則可以採用數學上的加法來進行一些變通。如下 include int main 2....

交換兩個陣列使兩個陣列和的差最小

有兩個陣列a,b,大小都為n,陣列元素的值任意整形數,無序 要求 通過交換a,b中的元素,使 陣列a元素的和 與 陣列b元素的和 之間的差最小。求解思路 當前陣列a和陣列b的和之差為 a sum a sum b a的第i個元素和b的第j個元素交換後,a和b的和之差為 a sum a a i b j ...

交換兩個陣列使兩個陣列和的差最小

有兩個陣列a,b,大小都為n,陣列元素的值任意整形數,無序 要求 通過交換a,b中的元素,使 陣列a元素的和 與 陣列b元素的和 之間的差最小。求解思路 當前陣列a和陣列b的和之差為 a sum a sum b a的第i個元素和b的第j個元素交換後,a和b的和之差為 a sum a a i b j ...