【Java學習】相關基礎演算法
阿新 • • 發佈:2020-09-19
氣泡排序
原理:比較兩個相鄰的元素,將值大的元素交換至右端,然後在剩下數中比較兩個相鄰的元素,將值大的元素交換到剩下數的右端,直到所有的數排好序。
思路:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。重複第一趟步驟,直至全部排序完成。
N個數字要排序完成,總共進行N-1趟排序,每i趟的排序次數為(N-i)次,所以可以用雙重迴圈語句,外層控制迴圈多少趟,內層控制每一趟的迴圈次數。
氣泡排序的優點:每進行一趟排序,就會少比較一次,因為每進行一趟排序都會找出一個較大值。如上例:第一趟比較之後,排在最後的一個數一定是最大的一個數,第二趟排序的時候,只需要比較除了最後一個數以外的其他的數,同樣也能找出一個最大的數排在參與第二趟比較的數後面,第三趟比較的時候,只需要比較除了最後兩個數以外的其他的數,以此類推……也就是說,沒進行一趟比較,每一趟少比較一次,一定程度上減少了演算法的量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public static void main(String[] args) {
int array[] = { 6 , 3 , 8 , 2 , 9 , 1 };
for ( int i= 0 ;i<array.length;i++) {
for ( int j= 0 ;j<array.length- 1 -i;j++) {<br>
if (array[j] > array[j+ 1 ]) {
int temp;
temp = array[j+ 1 ];
array[j+ 1 ] = array[j];
array[j] = temp;
}
}
}
for ( int x:array){
System.out.println(x);
}
}
|
選擇排序
原理:找到一個最小數交換到最前面,然後剩下數中找到最小數交換到剩下數最前面,一直重複此步驟,知道所有數排好