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 "排序後:";
for i = 1 to n
print a(i);
next i
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 伍拾步 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 此程式為從小到大排列 ... public static void exchange double a,double b public void sort double a i while count 0 i主要的bai方法是這兩du個,根據你的zhi需dao要再修飾一下內就是了容啊。c語言程式設計問題問題描述 定義函式void... 舉了例子 乙個陣列 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至此,陣列中最大的數被放在最右側了,接下來只要在前四...程式設計題 用氣泡排序法將一維陣列A 1010進行排列
定義函式void sort,用冒泡法對陣列a中的元素排序。自
用冒泡法對整數排序。整數用scanf函式輸入