冒泡排序法的原理與舉例

冒泡排序法是一種排序算法,如將int[ ] numbers={ 1,5,3,6,4,9,8,0,7,2}數組內的元素按升序排序

算法原理:將前後每兩個數進行比較,較大的數往後排,一輪下來最大的數就排到最後去了。然後再進行第二輪比較,第二大的數也排到倒數第二了,以此類推:

第一輪比較:

第一次比較:1,5,3,6,4,9,8,0,7,2第一個數不大於第二個數,不調換位置

第二次比較:1,3,5,6,4,9,8,0,7,2第二個數大於第三個數,調換位置

第三次比較:1,3,5,6,4,9,8,0,7,2個數不大於第個數,不調換位置

次比較:1,3,546,9,8,0,7,2個數大於第個數,調換位置

。。。。。以此類推

次比較:1,3,5468072,9第九個數大於第十個數,調換位置

上面就進行完了第一輪比較將最大的一個數字排到了最後面。比較次數9次

第二輪比較:

跟第一輪比較一樣,但我們可以發現,最後一個數字我們不需要比較,因爲那是最大的數

比較次數8次

第三輪比較:

比較次數7次

第九輪比較:

比較次數1次

從上面的分析我們可以看出我們排10個數需要比較九輪,每一輪比較由9次遞減到1次

代碼:

  1. //定義一個數組
  2. int[] numbers = { 1, 5, 3, 6, 4, 9, 8, 0, 7, 2 };
  3. //升序排序
  4. for ( int i = 0; i < numbers .Length -1 ; i++)
  5. {
  6. for ( int j = 0; j < numbers.Length -1-i; j++)
  7. {
  8. if (numbers [j]>numbers [j+ 1])
  9. {
  10. int temp = numbers[j];
  11. numbers[j] = numbers[j + 1];
  12. numbers[j + 1] = temp;
  13. }
  14. }
  15. }
  16. //輸出排序後數組
  17. for ( int i = 0; i < numbers.Length; i++)
  18. {
  19. Console.Write(numbers[i] + “\t”);
  20. }
  21. Console.ReadKey();

這樣就排序完了。

点赞