快速排序vb解法,快速排序 vb 要每一步的講解

時間 2021-05-05 19:41:10

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,這就不僅僅是速度快慢的問題了。棧的大小是很有限的,每次遞迴呼叫都會耗費一定的棧空間,函式的引數越多,每次遞迴耗費的空間也越多。因此如果能減少遞迴,將...