java之冒泡排序(Bubble sort)

來源:互聯網
上載者:User

標籤:

主要內容是摘自別人的,但是發現範例程式碼有錯,故內容複寫,代碼修改。

原理:臨近的數字兩兩進行比較,按照從小到大(從大到小)進行交換,這樣一趟過去後,最大或最小的數字被交換到了最後一位;

   然後再從頭開始進行兩兩比較交換,直到倒數第二位時結束(因為由第一遍排序得知已經把最大(小)數排到末尾了);

   接著再從頭開始進行兩兩比較交換,直到倒數第三位時結束(因為由第一遍排序得知已經把最大(小)數排到末尾了,第二遍把第二大(小)的數排到倒數第二位了);

   迴圈直到排完序。

   例子為從小到大排序,

   原始待排序數組| 6 | 2 | 4 | 1 | 5 | 9 |

第一趟排序(外迴圈)

  第一次兩兩比較6 > 2交換(內迴圈)

   交換前狀態| 6 | 2 | 4 | 1 | 5 | 9 |

   交換後狀態| 2 | 6 | 4 | 1 | 5 | 9 |

  第二次兩兩比較,6 > 4交換

   交換前狀態| 2 | 6 | 4 | 1 | 5 | 9 |

   交換後狀態| 2 | 4 | 6 | 1 | 5 | 9 |

  第三次兩兩比較,6 > 1交換

   交換前狀態| 2 | 4 | 6 | 1 | 5 | 9 |

   交換後狀態| 2 | 4 | 1 | 6 | 5 | 9 |

  第四次兩兩比較,6 > 5交換

   交換前狀態| 2 | 4 | 1 | 6 | 5 | 9 |

   交換後狀態| 2 | 4 | 1 | 5 | 6 | 9 |

  第五次兩兩比較,6 < 9不交換

   交換前狀態| 2 | 4 | 1 | 5 | 6 | 9 |

   交換後狀態| 2 | 4 | 1 | 5 | 6 | 9 |

第二趟排序(外迴圈)

  第一次兩兩比較2 < 4不交換

   交換前狀態| 2 | 4 | 1 | 5 | 6 | 9 |(已經知道最大)

   交換後狀態| 2 | 4 | 1 | 5 | 6 | 9 |

  第二次兩兩比較,4 > 1交換

   交換前狀態| 2 | 4 | 1 | 5 | 6 | 9 | 
   交換後狀態| 2 | 1 | 4 | 5 | 6 | 9 |

   第三次兩兩比較,4 < 5不交換

   交換前狀態| 2 | 1 | 4 | 5 | 6 | 9 | 
   交換後狀態| 2 | 1 | 4 | 5 | 6 | 9 |

   第四次兩兩比較,5 < 6不交換

   交換前狀態| 2 | 1 | 4 | 5 | 6 | 9 |

   交換後狀態| 2 | 1 | 4 | 5 | 6 | 9 |

 第三趟排序(外迴圈)

  第一次兩兩比較2 > 1交換

   交換前狀態| 2 | 1 | 4 | 5 | 6 | 9 |

   交換後狀態| 1 | 2 | 4 | 5 | 6 | 9 |

  第二次兩兩比較,2 < 4不交換

   交換前狀態| 1 | 2 | 4 | 5 | 6 | 9 | 
   交換後狀態| 1 | 2 | 4 | 5 | 6 | 9 |

  第三次兩兩比較,4 < 5不交換

   交換前狀態| 1 | 2 | 4 | 5 | 6 | 9 | 
   交換後狀態| 1 | 2 | 4 | 5 | 6 | 9 |

第四趟排序(外迴圈)無交換

   第一次兩兩比較1<2不交換   

   交換後狀態| 1 | 2 | 4 | 5 | 6 | 9 |

   第一次兩兩比較2<4不交換   

   交換後狀態| 1 | 2 | 4 | 5 | 6 | 9 |

第五趟排序(外迴圈)無交換

  第一次兩兩比較1<2不交換   

   交換後狀態| 1 | 2 | 4 | 5 | 6 | 9 |

原:| 1 | 2 | 4 | 5 | 6 | 9 |

一:| 1 | 2 | 4 | 5 | 6 | 9 |

二:| 1 | 2 | 4 | 5 | 6 | 9 |

三:| 1 | 2 | 4 | 5 | 6 | 9 |

四:| 1 | 2 | 4 | 5 | 6 | 9 |

五:| 1 | 2 | 4 | 5 | 6 | 9 |

排序完畢,輸出最終結果1 2 4 5 6 9

 1 /* 2 By starainDou 3 */ 4 public class Hello { 5     public static void main(String args[]){ 6         int []num = {6,2,4,1,5,9}; 7         for(int i = 0;i<num.length - 1;i++){ 8             for(int j = 0; j<num.length-1-i;j++){ 9                     if(num[j]>num[j+1]){10                         int temp = num[j];11                         num[j] = num[j+1];12                         num[j+1] = temp;13                     }14             }15         }16     for(int n = 0; n < num.length; n ++){17         System.out.print(num[n]+"\t");18         }19     }20 }

在此感謝原作者

java之冒泡排序(Bubble sort)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.