冒泡排序:
Java中有一些基礎的排序算法,這種一般常見于面試題中。
冒泡排序:就是将一個長度為n的數組做n-1次排序(循環)。
總結為依據話就是兩兩比較,大的資料交換位置。
①第一次循環
将第一個元素與第二個相比,如果比第二個小,那麼資料就不變;
如果比第二個大,那麼就交換兩者的位置。
第二個和第三個比,如果第二個比第三個大,者交換位置,否則不變。
以此類推,直到和最後一個相比較完為止。
這樣最後一個數就是最大值。
②第二次就從第一個開始,比較到n-1個為止。
這樣漸漸的最大的數都依次排列到了最後,第一個數是最小的。就像冒泡一樣,最上面是最大的泡,是以稱為冒泡排序。
下面是實作冒泡排序的代碼,相當于是兩層for循環。
<code>package</code> <code>****</code>
<code>import</code> <code>org.junit.Test;</code>
<code>/**</code>
<code> </code><code>* @author jon</code>
<code> </code><code>*</code>
<code> </code><code>*自己寫一個冒泡排序</code>
<code> </code><code>*/</code>
<code>public</code> <code>class</code> <code>BubbleSort {</code>
<code> </code><code>@Test</code>
<code> </code><code>public</code> <code>void</code> <code>testBubbleSort() {</code>
<code> </code><code>//定義一個int數組</code>
<code> </code><code>int</code><code>[] a = {</code><code>12</code><code>,</code><code>23</code><code>,</code><code>10</code><code>,</code><code>33</code><code>,</code><code>45</code><code>,</code><code>20</code><code>};</code>
<code> </code><code>//依次擷取元素,然後和元素後面的每一個比較,如果比後面的小就放到後面,</code>
<code> </code><code>//如果比後面的大則不變,那麼最後一個就是最小的了</code>
<code> </code><code>for</code> <code>(</code><code>int</code> <code>i = </code><code>0</code><code>; i < a.length-</code><code>1</code><code>; i++) {</code><code>//第一次比較</code>
<code> </code><code>System.out.println(</code><code>"第"</code><code>+(i+</code><code>1</code><code>)+</code><code>"次排序結果為:"</code><code>);</code>
<code> </code><code>for</code> <code>(</code><code>int</code> <code>j = </code><code>0</code><code>; j < a.length-</code><code>1</code><code>-i; j++) { </code><code>//每次比較的都是剩下的了</code>
<code> </code><code>if</code> <code>(a[j] > a[j+</code><code>1</code><code>]) {</code>
<code> </code><code>int</code> <code>temp = a[j];</code>
<code> </code><code>a[j] = a[j+</code><code>1</code><code>];</code>
<code> </code><code>a[j+</code><code>1</code><code>] = temp;</code>
<code> </code><code>}</code>
<code> </code><code>System.out.print(</code><code>"_"</code><code>+a[j]);</code><code>//列印正在排序的</code>
<code> </code><code>}</code>
<code> </code><code>//列印已經排序好的</code>
<code> </code><code>for</code> <code>(</code><code>int</code> <code>m = a.length-</code><code>1</code><code>-i; m < a.length; m++) {</code>
<code> </code><code>System.out.print(</code><code>"_"</code><code>+a[m]);</code>
<code> </code><code>System.out.println();</code>
<code> </code><code>}</code>
<code> </code><code>//周遊a數組</code>
<code> </code><code>System.out.println(</code><code>"最終結果為:"</code><code>);</code>
<code> </code><code>for</code> <code>(</code><code>int</code> <code>i = </code><code>0</code><code>; i < a.length; i++) {</code>
<code> </code><code>System.out.print(a[i]+</code><code>" "</code><code>);</code>
<code> </code><code>}</code>
<code>}</code>
<code>/* 輸出的結果為:</code>
<code> </code><code>第1次排序結果為:</code>
<code> </code><code>_12_10_23_33_20_45</code>
<code> </code><code>第2次排序結果為:</code>
<code> </code><code>_10_12_23_20_33_45</code>
<code> </code><code>第3次排序結果為:</code>
<code> </code><code>_10_12_20_23_33_45</code>
<code> </code><code>第4次排序結果為:</code>
<code> </code><code>第5次排序結果為:</code>
<code> </code><code>最終結果為:</code>
<code> </code><code>10 12 20 23 33 45</code>
<code></code>
本文轉自建波李 51CTO部落格,原文連結:http://blog.51cto.com/jianboli/1867258,如需轉載請自行聯系原作者