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...