演算法學習之氣泡排序法

2021-09-28 01:19:08 字數 806 閱讀 7428

sub bubblesorted()

dim k as integer

randomize

with worksheets("sheet1")

for k = 1 to 100

.cells(k, 1) = int(rnd * 10) + 1 '在第一列生成100個隨機整數

next

for i = 1 to 99

for j = i + 1 to 100 '外迴圈第一輪賦值,內迴圈完,再外迴圈第二輪賦值

if .cells(i, 1) > .cells(j, 1) then '按照從小到大的順序排列

t = .cells(i, 1)

.cells(i, 1) = .cells(j, 1)

.cells(j, 1) = t

end if

next

next

end with

end sub

我理解版本的冒牌排序法:

將位置1 上的數與餘下的99個數(浮動的99個數)進行比較,較小的數可以坐上位置1,按照順序,第2到第100位的選手,都有機會跟位置1的人進行pk。想象一下produce101時候的王位之爭,只要有人來挑戰,第一位必須應戰。這期間,也許第一位早已不是當初第乙個選擇坐在這個位置上的人,但絕對是最小數,就算沒有親自和每個數進行比較,只要它(a)比另乙個數(b)小,就說明a比已經比較過的數小。

除開第一位置上的最小數之後,接下來爭第二位,同上,遍歷所有。誰與我爭鋒,勇者必勝(這裡是誰小誰上位)

結論:這個方法一定能排出正確順序來,但是會花很久。

演算法學習之氣泡排序

基本思想 陣列 6,5,7,3,8,2 按從公升序排列。依次比較相鄰的兩個數,前乙個數比後乙個數大則交換位置,得到最大的數在最後。第一輪比較完後的結果為 5,6,3,7,2,8 第二輪比較得出倒數第二的數字 5,3,6,2,7,8 依次類推 package com.example.demo.othe...

演算法學習之氣泡排序

氣泡排序 bubblesort 迴圈遍歷要排序的元素,依次比較相鄰的兩個元素,如果他們的順序錯誤就把他們交換位置。每一次迴圈遍歷,直到陣列的末尾。因為越大的元素會經過交換到陣列的前端 公升序或降序排列 整個過程就像氣泡最終會上浮到頂端一樣,稱之為 氣泡排序 原理步驟 1 比較相鄰的兩個元素。如果第乙...

演算法學習之氣泡排序,6174問題

排序與檢索 資料處理是計算機的強項,包括排序 檢索和統計等。6174問題 假設你有乙個各位數字互不相同的四位數,把所有數字從大到小排序後得到a,從小到大排序後得到b,然後a b替換原來這個數,最終都會得到6174。例如,從1234出發,依次可以得到4321 1234 3087,8730 378 83...