選擇排序的過(guò)程:對(duì)比數(shù)組中前一個(gè)元素跟后一個(gè)元素的大小,如果后面的元素比前面的元素小則用一個(gè)變量k來(lái)記住他的位置,接著第二次比較,前面“后一個(gè)元素”現(xiàn)變成了“前一個(gè)元素”,繼續(xù)跟他的“后一個(gè)元素”進(jìn)行比較如果后面的元素比他要小則用變量k記住它在數(shù)組中的位置(下標(biāo)),等到循環(huán)結(jié)束的時(shí)候,我們應(yīng)該找到了最小的那個(gè)數(shù)的下標(biāo)了,然后進(jìn)行判斷,如果這個(gè)元素的下標(biāo)不是第一個(gè)元素的下標(biāo),就讓第一個(gè)元素跟他交換一下值,這樣就找到整個(gè)數(shù)組中最小的數(shù)了。然后找到數(shù)組中第二小的數(shù),讓他跟數(shù)組中第二個(gè)元素交換一下值,以此類推。
大理州網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,大理州網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為大理州1000多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的大理州做網(wǎng)站的公司定做!
冒泡排序的察坦過(guò)程:比較相鄰的元素。如果第一個(gè)比第二個(gè)大,就交換他們兩個(gè)。對(duì)每一對(duì)相鄰元素作同樣的工作,從開(kāi)始第一對(duì)到結(jié)尾的最后一對(duì)。在這一點(diǎn),最后敗虛桐的元素應(yīng)該會(huì)是最大的數(shù)。針對(duì)所有的元素重復(fù)以上的步驟,除了最后一個(gè)。持續(xù)每次對(duì)越來(lái)越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對(duì)數(shù)字需要比較譽(yù)譽(yù)。
你給出的代碼屬于選擇排序,F(xiàn)or i=1 to 9是因?yàn)閿?shù)組a只包含10個(gè)元素,按選擇排序的要求,需要將數(shù)組前9個(gè)元素分別與后面的元素(從i+1起,直到10為止)比較大??;p=i的作用為把a(bǔ)(i)視為最小元素,記錄a(i)的數(shù)組下標(biāo);p=j的作用為當(dāng)a(j)比a(p)小時(shí),記錄a(j)的數(shù)組下標(biāo),p=j記錄的是每一輪選擇排序過(guò)程的最小值的數(shù)組下標(biāo)。
選擇排序和冒泡排序的排序過(guò)程對(duì)比(從小到大):
選擇排序(10個(gè)元素)----------- 冒泡排序(10個(gè)元素)
For i = 1 To 9 ------------------ For i = 9 To 1 Step -1
p = i
For j = i + 1 To 10 ------------- For j = 1 To i
If a(p) a(j) Then p = j ------- If a(j) a(j+1) Then 'j=i時(shí),a(j+1)為每一輪的最大值
------------------------------------- temp = a(j + 1)
------------------------------------- a(j + 1) = a(j)
------------------------------------- a(j) = temp
------------------------------------ End If
Next j -------------------------- Next j
temp = a(i)
a(i) = a(j)
a(j) = temp
Next i -------------------------- Next i
Private?Sub Command1_Click()
Dim a(1 To 10) As Integer
For i = 1 To 10
a(i) = Int(Rnd * 10)
Print a(i);
Next i
'以上十隨機(jī)得出10個(gè)數(shù)
For i = 1 To 9 '這里開(kāi)始是雙重循環(huán)
For j = i + 1 To 10
If a(i) a(j) Then '如果前一個(gè)數(shù)大于后一個(gè)數(shù)則交換位置
t = a(i): a(i) = a(j): a(j) = t
End If
Next j
Print a(i);
Next i
Print a(i);
End Sub
I等于1時(shí) 就是拿第一位和第二位比較 比較大的的數(shù)排后面 然后比較第一位和第談備三位 For j = i + 1
To 10 直到比較到最后一位
i=2 時(shí)也是如此 循環(huán)9次就完成排序
5 3 2 7
i=1 時(shí)
J=2時(shí) 3 5 2 7
J=3時(shí) 2 5 3 7
j=4時(shí) 2 5 3 7
I=2時(shí)含虧毀
j=3時(shí) 2 3 5 7
擴(kuò)展資料
Private?Sub?空基Command1_Click()
Dim?a(10)?As?Integer
Dim?b?As?Integer
Dim?i?As?Integer
Dim?j?As?Integer
Dim?k?As?Integer
For?i?=?1?To?10
a(i)?=?Int(Rnd?*?90?+?10)
Print?a(i);
Next?i
For?i?=?1?To?9
k?=?i
For?j?=?k?+?1?To?10
If?a(j)??a(k)?Then?k?=?j
Next?j
If?a(i)??a(k)?Then
b?=?a(i)
a(i)?=?a(k)
a(k)?=?b
End?If
Next?i
For?i?=?1?To?10
Print?a(i);
Next?i
End?Sub
參考資料:百度百科 - 選擇法排序
Private Sub Command4_Click()
Dim t As clerk, i%, j%
For i = 0 To n - 1
? For j = i To n - 2
? ? ? If a(i).vc a(j + 1).vc Then
? ? ? ? ? t = a(i): a(i) = a(j + 1): a(j + 1) = t
? ? ? End If
? Next j
Next i
Picture2.Cls
Picture2.Print "學(xué)號(hào)? ? ? ?春嫌 ? 姓名? ? ? ? ? ?VC? ? ? ? ? ? VB"
Picture2.Print "---------------------------------------------"
For i = 0 To n - 1
? Picture2.Print a(i).number, a(i).name, a(i).vc, a(i).vb
Next i
End Sub
擴(kuò)展資料
vb數(shù)組排序思路:
1、冒泡排序法:
位置相鄰兩數(shù)進(jìn)行兩兩比較,在比較時(shí)如果發(fā)現(xiàn)前面的數(shù)比后面的數(shù)大,則進(jìn)行交換,都比較完一輪后,把最大一個(gè)數(shù)放到最后,如此進(jìn)行下去即可完成冒泡排序。
2、比較交換法
假設(shè)第一個(gè)數(shù)最小,然后第一個(gè)數(shù)依次與后面的每個(gè)數(shù)都進(jìn)行比較, 若比較時(shí)發(fā)現(xiàn)后面的數(shù)比第一個(gè)數(shù)小, 則兩數(shù)位置進(jìn)行交換, 全部都比較完算一輪,每一輪比較完后,第一個(gè)數(shù)是最小的數(shù),如此進(jìn)行即可完成比較排序。
3、選擇排序
假設(shè)第一個(gè)數(shù)最小,接著記下最小數(shù)所在的位置,然后將最小數(shù)依次與后面的每一個(gè)數(shù)都進(jìn)行比較,若比較時(shí)發(fā)現(xiàn)后面的數(shù)比最小的數(shù)還小,則修改最小數(shù)所在位置,全部都羨稿比較完算一輪。
每一輪比較完后,最小數(shù)所在的位置是否跟假設(shè)的是同一個(gè)位置,若不是,則最小數(shù)與扒派手第一個(gè)數(shù)進(jìn)行交換位置,如此進(jìn)行即可完成選擇排序。
當(dāng)前題目:vb點(diǎn)虐
中的選擇排序 vb中排序?qū)傩栽趺丛O(shè)置
網(wǎng)頁(yè)鏈接:http://www.ekvhdxd.cn/article30/ddpgipo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站維護(hù)、響應(yīng)式網(wǎng)站、外貿(mào)建站、小程序開(kāi)發(fā)、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)