你可以這樣理解:(從小到大排序)存在10個不同大小的氣泡,由底至上地把較少的氣泡逐步地向上公升,這樣經過遍歷一次後,最小的氣泡就會被上公升到頂(下標為0),然後再從底至上地這樣公升,迴圈直至十個氣泡大小有序。
在氣泡排序中,最重要的思想是兩兩比較,將兩者較少的公升上去
問題:
設有一陣列,其大小為10個元素(int arr[10])陣列內的資料是無序。現在要求我們通過程式設計將這個無序的陣列變成乙個從小到大排序的陣列(從下標為0開始)
· 首先,把10個數里最小的個數放到下標為0的位置上(arr[0]);
· 通過將下標為0的數(arr[0])與剩下其餘9個數進行對比交換(將較少者放置在 下標為0的位置上),就可以得到這10個數最小的那個;
· 10個數最小的那位確定後,接下來就要找剩下9個數最小的那個
· 因為已經確定出乙個最小的數,所以就不要動arr[0],直接從arr[1]開始,與剩下的8個數對比交換,找出9個數中最小的那位放到下標為1(arr[1])的位置上
· 繼續按照這個思路就可以將這十個數變成有序的(從小到大)的陣列
int arr = ;
for (int i = 0; i < arr.length - 1; i++)
} }
for (int i :arr)
解釋:
對比陣列中前乙個元素跟後乙個元素的大小,如果後面的元素比前面的元素小則用乙個變數k來記住他的位置,接著第二次比較,前面「後乙個元素」現變成了「前乙個元素」,繼續跟他的「後乙個元素」進行比較如果後面的元素比他要小則用變數k記住它在陣列中的位置(下標),等到迴圈結束的時候,我們應該找到了最小的那個數的下標了,然後進行判斷,如果這個元素的下標不是第乙個元素的下標,就讓第乙個元素跟他交換一下值,這樣就找到整個陣列中最小的數了。然後找到陣列中第二小的數,讓他跟陣列中第二個元素交換一下值,以此類推。
選擇排序法的第一層迴圈從起始元素開始選到倒數第二個元素,主要是在每次進入的第二層迴圈之前,將外層迴圈的下標賦值給臨時變數,接下來的第二層迴圈中,如果發現有比這個最小位置處的元素更小的元素,則將那個更小的元素的下標賦給臨時變數,最後,在二層迴圈退出後,如果臨時變數改變,則說明,有比當前外層迴圈位置更小的元素,需要將這兩個元素交換.
public static void selectsort(int a)
} if (minindex != i)
} }
10分鐘看懂!基於Zookeeper的分布式鎖
什麼是zookeeper?zookeeper 業界簡稱zk 是一種提供配置管理 分布式協同以及命名的中心化服務,這些提供的功能都是分布式系統中非常底層且必不可少的基本功能,但是如果自己實現這些功能而且要達到高吞吐 低延遲同時還要保持一致性和可用性,實際上非常困難。因此zookeeper提供了這些功能...
30分鐘掌握 氣泡排序
演算法步驟 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。我的理解 氣泡排序在整個...
3分鐘學會氣泡排序
思路 兩個元素比較,大的放到右邊 從頭開始依次比較相鄰的兩個元素,目的是找出最大的乙個元素放到末尾,這個元素不再參與比較 第二次仍然從頭開始,把第二大的元素放到正確的位置 一共比較 len 1 趟,因為已經確定了 len 1 個元素的位置,那麼第 n 個肯定是最小的那個了 第 i 趟的比較次數為 l...