快速排序演算法 vb示例及分析

2022-02-23 13:59:07 字數 2350 閱讀 2003

快速排序對氣泡排序的一種改進。它的基本思想是:通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列。

'快速排序演算法,對字串陣列進行排序

private sub quicksort(byref arrvalue() as string, 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

strvalue = "1: i=" & cstr(i) & " j=" & cstr(j) & " "

for intloop = 0 to ubound(arrvalue)

strvalue = strvalue & " " & arrvalue(intloop)

next

debug.print 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

strvalue = "2: i=" & cstr(i) & " j=" & cstr(j) & " "

for intloop = 0 to ubound(arrvalue)

strvalue = strvalue & " " & arrvalue(intloop)

next

debug.print strvalue

end if

loop until i = j

i = i - 1: j = j + 1

debug.print vbcrlf

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 form_load()

dim arr(8) as string

arr(0) = "r"

arr(1) = "e"

arr(2) = "a"

arr(3) = "n"

arr(4) = "b"

arr(5) = "u"

arr(6) = "c"

arr(7) = "o"

arr(8) = "f"

call quicksort(arr, 0, ubound(arr))

end sub

快速排序過程中的資料變化列表如下所示。從中可以看到一共執行了5次遞迴方法。每次執行時都是通過迴圈將陣列從中間分割成2半,大的在右邊,小的在左邊,然後再針對這2半分別呼叫下一次遞迴方法。

排序前:      r e a n b u c o f

1: i=0 j=8  f e a n b u c o r

2: i=0 j=6  c e a n b u f o r

1: i=3 j=6  c e a f b u n o r

2: i=3 j=4  c e a b f u n o r

1: i=0 j=3  b e a c f u n o r

2: i=0 j=2  a e b c f u n o r

1: i=1 j=2  a b e c f u n o r

1: i=2 j=3  a b c e f u n o r

1: i=5 j=8  a b c e f r n o u

2: i=5 j=7  a b c e f o n r u

1: i=5 j=6  a b c e f n o r u

氣泡排序演算法分析及程式示例

b 例項說明 b 用氣泡排序方法對陣列進行排序。b 例項解析 b 交換排序的基本思想是兩兩比較待排序記錄的關鍵字,發現兩個記錄的次序相反時即進行交換,直到沒有反序的記錄為止。應用交換排序基本思想的主要排序方法有氣泡排序和快速排序。b 氣泡排序 b 將被排序的記錄陣列 r 1.n 垂直排列,每個記錄 ...

選擇排序演算法分析及程式示例

b 例項說明 b 用直接選擇排序方法對陣列進行排序。b 例項解析 b 選擇排序 selection sort 的基本思想是 每趟從待排序的記錄中選出關鍵字最小的記錄,順序放在已排好序的子檔案的最後,直到全部記錄排序完畢。常用的選擇排序方法有直接選擇排序和堆排序。b 直接選擇排序 straight s...

快速排序及分析

歸併排序將陣列分為兩個子陣列分別排序,並將有序的子陣列歸併使得整個陣列排序 快速排序通過乙個切分元素將陣列分為兩個子陣列,左子陣列小於等於切分元素,右子陣列大於等於切分元素,將這兩個子陣列排序也就將整個陣列排序了。public static void quicksort int list publi...