1. 程式人生 > >java中氣泡排序與選擇排序的區別

java中氣泡排序與選擇排序的區別

初學java語言,排序演算法絕對是我們拿來實踐的好例子。而在排序中有兩種簡單的演算法是繞不開的,就是氣泡排序與選擇排序。下面來分別講解:

冒泡演算法:假設陣列長度為lenght,冒泡演算法的外迴圈為lenght-1,內迴圈則為相鄰的兩個數之間不斷比較,直到陣列末尾結束。其實現如下。

     public static void main(String[] args) {
int[] arry=new int[]{15,67,26,43,61,25,84,80,34,70};
int temp;
int count=0;

for(int i=1;i<arry.length;i++){
for(int j=0;j<arry.length-i;j++){
if(arry[j]>arry[j+1]){
temp=arry[j];
arry[j]=arry[j+1];
arry[j+1]=temp;
}
}
}
System.out.println("處理後的資料:");
for(int k=0;k<arry.length-1;k++){
System.out.print(arry[k]+" ");
}
System.out.println("jiaohuan:");
System.out.println(count); 
}

       程式執行結果為:

      處理後的資料:
     15 25 26 34 43 61 67 70 80 jiaohuan:
      45

       選擇排序:假設陣列長度為lenght,選擇排序的外迴圈也是lenght-1,內迴圈則為使用第一個數與其他的數比較,得出一個最小的數,將最小數與陣列的第一個元素交換;第二次外迴圈,則用陣列的第二個數與第三到底lenght個數比較,找到其中的最小值,並將此最小值與陣列的第二個數交換,一直下去,直到陣列末尾。

程式如下所示:

public static void main(String[] args) {
int[] arry=new int[]{15,67,26,43,61,25,84,80,34,70};
int temp;
int count=0;
for(int i=0;i<arry.length-1;i++){
for(int j=i+1;j<arry.length-1;j++){
if(arry[j]>arry[j+1]){
temp=arry[j];
arry[j]=arry[j+1];
arry[j+1]=temp;
count++;
}
}
}
Arrays.sort(arry);
System.out.println("處理後的資料:");
for(int k=0;k<arry.length-1;k++){
System.out.print(arry[k]+" ");
}
System.out.println("jiaohuan:");
System.out.println(count);


}

      程式執行結果為:

      處理後的資料:
     15 25 26 34 43 61 67 70 80 jiaohuan:
     12

     可以看到在java環境中選擇排序中數的交換次數比氣泡排序少了33次,如果資料量更大,目測兩者間的數的交換次數差距會更大,即演算法的效率差別更大。