1. 程式人生 > >冒泡排序java

冒泡排序java

dem 位置 ble system out args 簡單 clas align

一、最簡單粗暴的排序

思想為:讓每一個關鍵字都和它後邊的每一個關鍵字比較,

如果大則交換,這樣第一個位置的關鍵字在一次循環後一定變為最小值。

 1 package demo01;
 2 
 3 class BubbleSort01 {
 4     public static void main(String[] args) {
 5         int[] n = {0,5,2,6,9,3,4,8,1,10,82,100,52,35,46,7};
 6         int i,j;
 7         for(int x=1;x<n.length;x++){
 8             System.out.print(n[x] + "、");
9 } 10 System.out.println(""); 11 12 for(i=1;i<n.length;i++){ 13 for(j=i+1;j<n.length;j++){ 14 if(n[i]>n[j]){ 15 int temp = n[i]; 16 n[i] = n[j]; 17 n[j] = temp; 18 }
19 } 20 } 21 22 for(int x=1;x<n.length;x++) 23 System.out.print(n[x]+ "、"); 24 } 25 }

二、正宗的冒泡排序

思想:

當外循環為1(循環變量i=1),內循環(變量j)由大到小,兩兩比較,

將較小值換到前面,之道最小值放到最前面;開始下一次循環(i=2),一次類推…………

 1 package demo01;
 2 
 3 class BubbleSort02 {
 4     public static
void main(String[] args) { 5 int[] n = {0,5,2,6,9,3,4,8,1}; 6 int i,j; 7 for(int x=1;x<n.length;x++){ 8 System.out.print(n[x] + "、"); 9 } 10 System.out.println(""); 11 12 for(i=1;i<n.length;i++){ 13 for(j=n.length-1;j>=2;j--){ 14 if(n[j]<n[j-1]){ 15 int temp = n[j]; 16 n[j] = n[j-1]; 17 n[j-1] = temp; 18 } 19 } 20 } 21 22 for(int x=1;x<n.length;x++) 23 System.out.print(n[x]+ "、"); 24 } 25 }

三、優化的冒泡排序算法

思想:在上述算法二的基礎上,對交換數據的步驟進行標記,即,如果發生了數據交換,標記的值就會變化。

當某次外循環進行時,標記位的值始終不變,說明此次循環沒有發生值的交換,即說明已經排序完成。

 1 package demo01;
 2 
 3 class BubbleSort03 {
 4 
 5     public static void main(String[] args) {
 6         int[] n = {0,5,2,6,9,3,4,7,8,1};
 7         
 8         for(int x=1;x<n.length;x++){
 9             System.out.print(n[x] + "、");
10         }
11         System.out.println("");
12         
13         int i,j;
14         boolean flag = true;    //flag作為標記
15         for(i=1;i<n.length && flag;i++){
16             flag = false;        //初始化flag
17             for(j=n.length-1;j>=2;j--){
18                 if(n[j]<n[j-1]){
19                     int temp = n[j];
20                     n[j] = n[j-1];
21                     n[j-1] = temp;
22                     flag = true;
23                 }
24             }
25         }
26         
27         for(int x=1;x<n.length;x++)
28             System.out.print(n[x]+ "、");
29     }
30 }

冒泡排序java