既然要演示成動畫壹樣,本題的難點在於在Timer控件的timer事件中,構造出模擬雙層冒泡排序的循環,既然是雙層循環,所以需要兩個循環變量i,j,我們這裏利用i控制外層循環,j控制內層循環。然後我們需要壹個數組arr,需要壹個計算循環了多少次的累加變量n,然後需要壹個冒泡排序的中轉站變量m。於是我們在模塊的頂部,需要定義上面五個變量,如下:
Dim?arrDim?i?as?integer,?j?as?integer,?m?as?integer,?n?as?integer
那麽到我們點擊開始的時候,根據妳的題意,需要完成第壹,將textbox1的數字讀入到數組arr中,然後對內外層循環變量進行初始化,並且啟動計時器,於是代碼如下:
Private?sub?command1_Click()arr?=?Split(TextBox1.Text,?"?")?'初始化數組
i?=?UBound(arr)?-?1?'初始化外層循環的初始值
j?=?0'初始化內層循環的起始值
Timer1.Enabled?=?True'時間控件開始運轉
End?Sub
在Timer1控件內部,我們要做的,就是在Textbox2中,顯示每壹次循環的值,然後對各種變量進行處理,代碼如下:
private?sub?Timer1_Timer()If?arr(j)?>?arr(j?+?1)?Then?'判斷如果前面的數大於後面的數,那麽交換兩個數,所以最終將使數字升序排列
m?=?arr(j)
arr(j)?=?arr(j?+?1)
arr(j?+?1)?=?m
End?If'冒泡排序的條件語句
n?=?n?+?1'計算循環次數
TextBox2.Text?=?Join(arr,?"?")
TextBox3.Text?=?n
j?=?j?+?1
If?j?=?i?+?1?Then?i?=?i?-?1?:?j?=?0?'內層循環變量j大於i的值,那麽對i值進行處理,進入下壹層循環,初始化i值和j值
End?Sub
妳自己看著改吧,希望能幫到妳!