冒泡排序法是一種排序算法,如將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,5,4,6,9,8,0,7,2 第四個數大於第五個數,調換位置
。。。。。以此類推
第九次比較:1,3,5,4,6,8,0,7,2,9第九個數大於第十個數,調換位置
上面就進行完了第一輪比較將最大的一個數字排到了最後面。比較次數9次
第二輪比較:
跟第一輪比較一樣,但我們可以發現,最後一個數字我們不需要比較,因爲那是最大的數
比較次數8次
第三輪比較:
比較次數7次
。
。
。
。
第九輪比較:
比較次數1次
從上面的分析我們可以看出我們排10個數需要比較九輪,每一輪比較由9次遞減到1次
代碼:
- //定義一個數組
- int[] numbers = { 1, 5, 3, 6, 4, 9, 8, 0, 7, 2 };
- //升序排序
- for ( int i = 0; i < numbers .Length -1 ; i++)
- {
- for ( int j = 0; j < numbers.Length -1-i; j++)
- {
- if (numbers [j]>numbers [j+ 1])
- {
- int temp = numbers[j];
- numbers[j] = numbers[j + 1];
- numbers[j + 1] = temp;
- }
- }
- }
- //輸出排序後數組
- for ( int i = 0; i < numbers.Length; i++)
- {
- Console.Write(numbers[i] + “\t”);
- }
- Console.ReadKey();
這樣就排序完了。