菜鳥每天練習 之 氣泡排序

2021-05-25 12:08:43 字數 907 閱讀 6432

氣泡排序是經過n-1趟子排序完成的,第i趟子排序從第1個數至第n-i個數,若第i個數比後乙個數大(則公升序,小則降序)則交換兩數.

氣泡排序(bubblesort)的基本概念是:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放到了最後。在第二趟:仍從第一對數開始比較(因為可能由於第2個數和第3個數的交換,使得第1個數不再小於第2個數),將小數放前,大數放後,一直比較到倒數第二個數(倒數第一的位置上已經是最大的),第二趟結束,在倒數第二的位置上得到乙個新的最大數(其實在整個數列中是第二大的數)。如此下去,重複以上過程,直至最終完成排序。

用二重迴圈實現,外迴圈變數設為i,內迴圈變數設為j。外迴圈重複9次,內迴圈依次重複9,8,...,1次。每次進行比較的兩個元素都是與內迴圈j有關的,它們可以分別用a[j]和a[j+1]標識,i的值依次為1,2,...,9,對於每乙個i, j的值依次為1,2,...10-i。

推演:(也可用從結尾開始)

1,3,5,4,2,9,18,12,20,11

1,3       

3,5  1,3

5,4   4,3  3,1

5,2   4,2  3,2  2,1

5,9    5,4,  4,3   3,2  2,1

9,18   9,5   5,4   4,3  3,2  2,1

18,12   12,9  9,5   5,4   4,3  3,2  2,1

18,20    18,12   12,9   9,5,  5,4  4,3   3,2  2,1

20,11    11,18   11,12   11,9  9,5   5,4   4,3   3,2   2,1

菜鳥每天練習 之 遞迴演算法

遞迴演算法是把問題轉化為規模縮小了的同類問題的子問題。然後遞迴呼叫函式 或過程 來表示問題的解。遞迴過程一般通過函式或子過程來實現。遞迴演算法 在函式或子過程的內部,直接或者間接地呼叫自己的演算法。遞迴演算法解決問題的特點 1 遞迴就是在過程或函式裡呼叫自身。2 在使用遞迴策略時,必須有乙個明確的遞...

氣泡排序練習

using system using system.collections.generic using system.linq using system.text return list class program double s sort p new sort s p.paixu a for i...

菜鳥也來學演算法之氣泡排序

氣泡排序可以說是眾多排序演算法之中較簡單的一種,思想與選擇排序類似,選擇排序每一次遍歷取出最小的數放在首位 暫時這樣認為 而氣泡排序則每一次遍歷把最大的數放在陣列的最後乙個位置,舉個例子 12,56,34,789,8,28 第一次遍歷 12,34,56,8,28,789 第二次遍歷 12,34,8,...