求詳細講解vb陣列用冒泡法排序,求詳細講解VB陣列用冒泡法排序

2022-03-11 04:53:38 字數 5894 閱讀 7268

1樓:

呵呵。 這個不難理解啊,冒泡法就是先取最大的然後依次往下,排完後就是從大到小,比如1,2,3,4,5

外層就是從第一位到第五位,比較第一位。從頭到尾的選 5最大,放到第一位,就變成5,1,2,3,4,下一輪,因為5已經選 出來了,第一位就不用比了。只有1.

2.3.4,這下就只有四位了,次數就是n-i了。

到了第幾位只跟他後面的幾位比,前面的不管,所以。。不知道你明白沒

外層就是從1-5,每位操作一次,內層就是從外層選定的位置開始,向後比較。

for i = 1 to 50

for j = i to 50

if aa(i) < aa(j) thenkk = aa(i)

aa(i) = aa(j)

aa(j) = kk

end if

next

next

2樓:匿名使用者

假入是10 個兩位數。

private sub cmd1_click()dim a(10) as integer, i as integer, j as _

integer, m as integerrandomize

picture1.print "排序前:"

for i = 1 to 10

a(i) = int(90 * rnd) + 10picture1.print a(i);

next i

for i = 1 to 9

for j = 1 to (10 - i)if a(j) >= a(j + 1) then '按公升序排列m = a(j)

a(j) = a(j + 1)

a(j + 1) = m

end if

next j

next i

picture1.print '為什麼非得有這句呢?

picture1.print "排序後:"

for i = 1 to 10

picture1.print a(i);

next i

end sub

3樓:

其實雙重迴圈就好比你做排列組合的題目一樣,比如5個不同顏色的球取2個,有多少種取法?

你做不出來,想一種種的數出來(當然沒人那麼笨,打個比方).

這時你的方法就是:先選定一種顏色的球,然後在剩下的球中選取,選完了後選定另一種球,再在其他球中選取...直到都數完了

那麼外重迴圈好比你先選定的一種球,內重迴圈好比你每選定一種球后在剩下的球中數數.

氣泡排序也是如此:其實質就是把任意兩個數進行比較,排列大小,外重是選定乙個數,內重是將選定的數與剩下的數依次比較,條件符合則交換.這樣最終就能將資料排序了.

~加油了

vb程式設計:選擇法及冒泡法排序陣列

4樓:匿名使用者

自己複製一下,加上按鈕、文字框控制項。

dim rnddata(1 to 15) as integer '定義窗體級別的陣列變數

private sub cmdrnd_click()

txtrnddata.text = "" '清除輸入區

txtoutput.text = "" '清除輸出區

randomize

dim intindex as long

for intindex = 1 to 15

'填充隨機數,並使用cint強制轉換為整數型別

rnddata(intindex) = cint(100 * rnd + 1)

'vbcrlf為vb常數,表示回車換行

txtrnddata.text = txtrnddata.text & rnddata(intindex) & vbcrlf

next intindex

end sub

private sub cmdarray_click()

dim i as long

dim j as long

dim imin as integer

dim itemp as integer

for i = 1 to 14 '15個數進行14輪比較

imin = i '第一輪比較的時候,假設第i個元素最小

'在陣列剩下後面的數字中選擇出最小的數(i到15)

for j = i + 1 to 15

if rnddata(j) < rnddata(imin) then imin = j

next j

'i到15中的最小的數,與第i個元素進行交換

itemp = rnddata(i)

rnddata(i) = rnddata(imin)

rnddata(imin) = itemp

next i

'顯示排序的結果

txtoutput.text = ""

for i = 1 to 15

txtoutput.text = txtoutput.text & rnddata(i) & vbcrlf

next i

end sub

private sub cmdexit_click()

unload me

endend sub

5樓:我們就是精彩

option explicit

private sub form_click()const n = 10

dim a(1 to n) as integer, i%, j%, k%, t%

randomize

print "排序前:";

for i = 1 to n

a(i) = int(rnd * 51) + 50print a(i);

next i

for i = 1 to n - 1

k = i

for j = i + 1 to n

if a(j) < a(k) then k = jnext j

t = a(i): a(i) = a(k): a(k) = tnext i

print

print "排序後:";

for i = 1 to n

print a(i);

next i

print

end sub

6樓:

vb菜鳥也會啊,可是我就是不會,哈哈!其實不難

關於vb一維陣列的氣泡排序法

7樓:念尐憂

for i=1 to 9

for j=i+1 to 10

if a(i)>a(j) then

t=a(i)

a(i)=a(j)

a(j)=t

這樣的意思.最後一句可以寫成這樣的三句話.

8樓:

就是把 a(i)和a(j)的值交換````

這個程式就是說第乙個和後面乙個的數比較,如果比後面乙個大,就交換這兩個數,然後和下乙個進行比較,直到最後乙個```

然後在把第二個數重複上述操作,直到最後乙個

9樓:

t=a(i):a(i)=a(j):a(j)=t這句話的意思是a(i)和a(j)的值互換,t是中間變數等價於,用冒號的意思是冒號前後是兩條語句

t=a(i)

a(i)=a(j)

a(j)=t

10樓:匿名使用者

for i=1 to 9

for j=i+1 to 10 '將j的值加1

if a(i)>a(j) then '如果a(i)比a(j)的值大,則進行下面**

t=a(i):a(i)=a(j):a(j)=t '將a(i)的值賦給t,將a(j)賦給a(i),最後將t的值賦給a(j)

最後一句的意思就是比較a(i)與a(j)的大小,如果a(i)比a(j)大,則將a(j)的值賦給a(i),再將a(i)的值賦給a(j),相當於執行一次交換,這就是「冒泡」演算法

當然,最後再用print語句輸出,即可排列出所有的元素

順便說一句,「:」的作用就是可以在一行執行多條語句,在執行多條類似的語句可以用":",來分割每條單獨的語句

vb中氣泡排序法詳解

11樓:匿名使用者

書上講的是不容易理解我來給你說下比如 3,1,2,5,6,4 為例首先把數按順序賦給陣列 a(1~6) 不難吧然後給你提一點冒泡法最後乙個數會確定下來第乙個數,來下面:從大到小排: 1。

for i = 1 to 6 2。 for j=i to 6-i 3。 if a(j)

next j 5。next i首先i=1,j=1 j=j+1 3和1比不交換 i=1 j=2 j=j+1 1和2交換 為3,2,1,5,6,4 i=1 j=3 j=j+1 1和5交換 為3,2,5,1,6,4 i=1 j=4 j=j+1 1和6交換 為3,2,5,6,1,4 i=1 j=5 j=j+1 1和4交換 為3,2,5,6,4,1 注意**6 for j= 1 to 6-i 為什麼6-i 因為最小的數 1 已經確定了,下次不需要排了。 繼續反覆操作 確定倒數第2個最小的,直到確定到順數第2個,完成。

為什麼是順數第2個,因為第1個和第2個比較了,第1個就不用比了,其中乙個最大乙個最小。累啊```不知道表達清楚沒

12樓:匿名使用者

設要排序的陣列為a(n)for j=1 to n-1'外迴圈for i= j+1 to n『內迴圈if a(j)>a(i) then』分別比較第i和其後所有個元素,若第i個元素大於第j個元素則交換,相當於把最小的移到第乙個,即冒泡到最上個 t=a(i)a(i)=a(j)a(j)=tnext inext jend ifnext n內迴圈一次保證最小的元素移到最前,下次排序只需要從第j+1個元素開始就行

13樓:貴州遵義發郎中

參見

14樓:匿名使用者

原理懂了,還看不懂**,那你懂vb**嗎?

vb 冒泡法陣列降序

15樓:匿名使用者

沒看你的**, 但是.....listbox控制項本身就可以自動排序list1.sorted = true

然後再用 list1.additem 插入你的資料, list1就已經按字母順序排好序了.

唉, 實在是閒得無聊,幫你把**改了.

dim i as integer, j as integer, n as integer, t as string, rows1() as string

n = 20

redim rows1(9 to n)

for i = 9 to n

rows1(i) = xlsheet.cells(i, 5)next

for i = 9 to n

for j = n to i + 1 step -1if rows1(j) > rows1(j - 1) thent = rows1(j)

rows1(j) = rows1(j - 1)rows1(j - 1) = t

end if

next

next i

for i = 9 to n

list1.additem rows1(i)next i

程式設計題 用氣泡排序法將一維陣列A 1010進行排列

伍拾步 c語言?include stdio.h void bubble sort int array,int n if 1 flag break void main i bubble sort a,10 for i 0 i 10 i printf d a i printf n 此程式為從小到大排列 ...

定義函式void sort,用冒泡法對陣列a中的元素排序。自

public static void exchange double a,double b public void sort double a i while count 0 i主要的bai方法是這兩du個,根據你的zhi需dao要再修飾一下內就是了容啊。c語言程式設計問題問題描述 定義函式void...

用冒泡法對整數排序。整數用scanf函式輸入

舉了例子 乙個陣列 3,2,5,1,4從小到大排序 從左側開始,逐對比較 3 2,交換3,2的位置,陣列變為2,3,5,1,43 5,順序不變 5 1,交換5,1的位置,陣列變為2,3,1,5,45 4,交換5,4的位置,陣列變為2,3,1,4,5至此,陣列中最大的數被放在最右側了,接下來只要在前四...