關於VB的氣泡排序法,急,關於C語言氣泡排序法的問題

2022-03-15 15:18:20 字數 6100 閱讀 3496

1樓:吹花

1、這個首先是「下標越界」吧,可以dim a(5)as integer

需要注意的是:你只用了5個元素,你沒用option base 1,所以下標從0開始的。

2、其次是「型別不匹配」,陣列的輸出要採用如下形式:

for i = 1 to ubound(a)print a(i),

next i

2樓:昨日的十七號

你的a陣列沒有定義下標 ^_^

解決方案:

直接限定下標範圍

dim a(1 to 5) as integer或dim a(6) as integer        '這裡要寫6,預設陣列下標從0開始

使用動態陣列的定義

dim a() as integer

redim a(6)                     '這裡要寫6,預設陣列下標從0開始

還有就是陣列的輸出問題了。輸出陣列只能一個一個輸出其中的資料,例如print a(1),print a(2),print a(i) 皆可。

望採納~

3樓:匿名使用者

括號裡得有索引,你直接這樣,vb不知道你究竟想輸出哪個陣列成員,因此 讓然報錯

關於c語言氣泡排序法的問題

4樓:甲珂莘之桃

改好了:

#include

"stdio.h"

#include

"stdlib.h"

void

printarray(int

a,int

n)//輸出排序每一步的結果

}count++;

//記錄已經發生的排序次數

printf("after

%dsorting:",count);

printarray(a,n);

//輸出第count次的排序結果

if(flag==0)

//沒進行一次排序,flag都清0,若交換再發生,則排序完成}}void

main()

//主函式

5樓:匿名使用者

是抄的嗎?自己執行一下就看見了

第20行

for(i=0;j

改成for(j=0;j

6樓:

你把錯誤的情況說明白點

關於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**嗎?

氣泡排序法是如何排序的???

15樓:隨便什麼名啦啦

氣泡排序演算法的原理:

1、比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。

2、對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

3、針對所有的元素重複以上的步驟,除了最後一個。

4、持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

16樓:飛鷹

它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序(如從大到小、首字母從a到z)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。

這個演算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名「氣泡排序」。

17樓:溜到被人舔

氣泡排序演算法的原理如下:

比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。

對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

針對所有的元素重複以上的步驟,除了最後一個。

持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較

18樓:匿名使用者

用兩層迴圈,比較兩個數大小,按要求,大數或者小數在前排序,注意二層迴圈中,j=i

19樓:匿名使用者

冒泡就是大的數,比較之後放到最前面,一次類推

20樓:

其實很簡單,就是一個一個進行對比如果ab就把兩個變數進行交換,使得最大/最小的排在前面。

2 4 3 5 1 五個數

2<4 交換成為 42351

2<3 成為 43251

2<5 成為 43521

2>1 不交換 43521

然後最小的1就一定會在最後

然後比較前4個數,4>3,3<5(交換),3>2;

成為45321,

前3個數4<5(交換),4>3

就成為了54321

這是一個巧合的例子,程式應該還要比較前兩個數5>4

最後成為54321。

以下是樣例程式。

#include

int main()

;int i,j,t; //i,j是計數器,t用作交換for(i=0;i<5;i++)}}

printf("%d %d %d %d %d\n",a[0],a[1],a[2],a[3],a[4]);

return 0; //程式正常結束

}你懂了麼?

21樓:我愛涮涮鍋

比如有一組數為12,23,1,4,2,6。需要使用氣泡排序方法使這組數從小到大排列。首先12和23比較,12<23,則位置不變;接著23和1比較,因為23>1,所以交換23和1的位置,這組數這時是12 1 23 4 2 6;然後比較23和4,因為23>4,所以交換23和4,這組數變為12 1 4 23 2 6;然後比較23和2,23>2,再交換,變為12 1 4 2 23 6;然後比較23和6,23>6,再交換,最後為12 1 4 2 6 23。

這就叫經過了一趟排序,即相鄰兩數比較,大的放在後面,經過一趟排序後,最大的數就冒泡到最後面了。然後再對前n-1個數進行第二趟排序,排序後第二大的數就放在了第n-1個位置;最後經過n-1趟排序後整個陣列就有序了。

vb氣泡排序演算法

22樓:匿名使用者

隨即產生10個0~100的數,並按從小到大排序private sub command1_click()dim num(1 to 10) as integerdim i, j, t as integerfor i = 1 to 10

num(i) = int((100 - 0 + 1) * rnd + 0)

next

for i = 1 to 10

for j = i + 1 to 10

if num(i) > num(j) thent = num(i)

num(i) = num(j)

num(j) = t

end if

next j

next i

for i = 1 to 10

print num(i)

next

end sub

23樓:

option base 1

private sub command1_click()dim a

dim b as integer

dim i as integer

dim j as integer

a = array(6, 3, 7, 8, 2, 1)print "排序前為";

for i = 1 to 6

print a(i);

next i

for i = 1 to 5

for j = 1 to 6 - i

if a(j) > a(j + 1) thenb = a(j + 1)

a(j + 1) = a(j)

a(j) = b

end if

next j

next i

print

print "排序後為";

for i = 1 to 6

print a(i);

next i

end sub

c語言中用氣泡排序法排列任意輸入的數,用程式輸出從小到大的排列具體過程,謝謝

include void main printf the sorted numbers n for i 0 i 10 i printf d a i 這是我用手打的哈 希望對你有幫助 可以試試這樣寫!include define n 10 void main for i 0 i printf 5d a...

關於勞動法的問題,急

可以肯定地告訴你,公司的做法有如下錯誤 1 未與你簽訂勞動合同 中華人民共和國勞動合同法 第七條 用人單位自用工之日起即與勞動者建立勞動關係。用人單位應當建立職工名冊備查。2 扣你一個月的工資,且工資與你們之間約定的不一致 這是明顯的違約行為。3 用所謂的 磨合期 勞動合同法只有試用期,且還要給工資...

關於房產糾紛的法律問題急,關於房產糾紛的法律問題

你說的情況bai屬於遺產繼承問題 該du房子屬於你奶奶和爺zhi爺的共同財產,dao應當先分割專 一半給你奶奶 房子的屬另外一半屬於你爺爺的遺產,在沒有遺囑的情況,按照下列情況進行分割 你奶奶 你爺爺的子女,一半是平均分割,盡贍養義務多的子女可以適當多分些。在有遺囑的情況下,按照遺囑進行分割財產。真...