1樓:匿名使用者
請參照快速排序演算法
dim arr(5) as integer
private sub quicksort(byref arrvalue() as integer, byval intlx as integer, byval intrx as integer) 'arrvalue()是待排的陣列,intlx,intrx為左右邊界
dim strvalue as string
dim i as integer
dim j as integer
dim intloop as integer
i = intlx
j = intrx
dowhile arrvalue(i) <= arrvalue(j) and i < j
i = i + 1
wend
if i < j then
strvalue = arrvalue(i)
arrvalue(i) = arrvalue(j)
arrvalue(j) = strvalue
end if
while arrvalue(i) <= arrvalue(j) and i < j
j = j - 1
wend
if i < j then
strvalue = arrvalue(i)
arrvalue(i) = arrvalue(j)
arrvalue(j) = strvalue
end if
loop until i = j
i = i - 1
j = j + 1
if i > intlx then
call quicksort(arrvalue, intlx, i)
end if
if j < intrx then
call quicksort(arrvalue, j, intrx)
end if
end sub
private sub command1_click()
for i = 0 to 5
print arr(i)
next i
end sub
private sub form_load()
arr(0) = 46
arr(1) = 79
arr(2) = 56
arr(3) = 38
arr(4) = 40
arr(5) = 80
call quicksort(arr, 0, ubound(arr))
end sub
2樓:匿名使用者
private sub form_click()dim a(6), i, j, t as integera(1) = 46
a(2) = 79
a(3) = 56
a(4) = 38
a(5) = 40
a(6) = 80
for i = 1 to 6
for j = i + 1 to 6
if a(i) > a(j) then
t = a(i)
a(i) = a(j)
a(j) = t
end if
next j
next i
for i = 1 to 6
print a(i)
next i
end sub
快速排序 vb 要每一步的講解 50
3樓:沙慧月
使用選擇排序法
假設值都放在陣列裡
假設有a(0)-a(9)
**for i=0 to 8
for j=i+1 to 9
if a(i)>a(j) then
temp=a(i)
a(i)=a(j)
a(j)=temp
next
next
這樣就可把數從小到大進行排列
4樓:匿名使用者
你的**呢?沒有**怎麼「每一步的講解」?
vb初學:有個陣列需要排序,從網上**了乙個快速排序法看不懂,麻煩高人逐條給做下標註。萬分感謝!
5樓:扶桑看天
'自定義過
程,帶三個引數(long型陣列,兩個整數)sub quicksort(list() as long, min as integer, max as integer)
'定義變數
dim med_value as longdim hi as integer
dim lo as integer
dim i as integer
'判斷引數2>=引數3退出過程
if min >= max then exit sub'取兩參關係的隨機整數
i = int((max - min + 1) * rnd + min)
'快速排序演算法
med_value = list(i)
list(i) = list(min)
lo = min: hi = max
dodo while list(hi) >= med_valuehi = hi - 1
if hi <= lo then exit doloop
if hi <= lo then
list(lo) = med_value
exit do
end if
list(lo) = list(hi)
lo = lo + 1
do while list(lo) < med_valuelo = lo + 1
if lo >= hi then exit doloop
if lo >= hi then
lo = hi
list(hi) = med_value
exit do
end if
list(hi) = list(lo)
loop
'遞迴呼叫
quicksort list(), min, lo - 1quicksort list(), lo + 1, maxend sub
vb呼叫 排序 分類 輸出資料,vb呼叫 排序 分類 輸出txt文件資料
private sub command1 click dim arr 1 to 29 as integer,ss 1 to 3 as string dim i as integer randomize for i 1 to 29 arr i int rnd 30 1 next for i 1 to ...
急VB輸出排序
程式中用的是 選擇排序法 其演算法是 每次從待排序的記錄中選出關鍵字最小 也可以是最大,本程式中就從大到小排序 的記錄,順序放在已有序的記錄序列的最後 或最前 面,直到全部數列有序。n個數排序,用選擇排序法,要比較n 1次 for i 1 to n 1 每次找到未排序中最大的數.k象一頂帽子,比較前...
快速排序問題請教 10,什麼是快速排序,
大家知道,遞迴對效能是有一定影響的,qsort函式在其尾部有兩次遞迴操作。如果待排序的序列劃分極端不平衡,遞迴深度將趨近於n,而不是平衡時的log2n,這就不僅僅是速度快慢的問題了。棧的大小是很有限的,每次遞迴呼叫都會耗費一定的棧空間,函式的引數越多,每次遞迴耗費的空間也越多。因此如果能減少遞迴,將...