java基礎學習--排序算法

選擇排序:讓第一個跟後面的每個元素比較,如果大於則交換量元素的位置,第二次則讓第二個元素跟後面的元素一次比較(因爲第一個元素的位置已經定了),一次類推直到最後一個元素.

代碼:
public class TestChoose {
public static void main(String[] args) {
int[] arr = {8,3,67,43,21,56,78};
choose(arr);
printArray(arr);
}
public static void choose(int[] arr){
int temp = 0;
for(int i = 0;i < arr.length;i ++){
for(int j = i+1;j < arr.length;j ++){
if(arr[i]>arr[j]){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
public static void printArray(int[] arr){
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
}
當if(arr[i]>arr[j])時:爲升序排列
if(arr[i]<arr[j])時:爲降序排列
冒泡排序:每次相鄰的兩個元素的相比較,每次相比大的放後面,每次比完以後最大的元素就確定 了,然後在從第一個元素開始,每相鄰的兩個元素之間的比較
代碼:
public static void bubbleSort(int[] arr){
int temp = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length -i -1; j++) {
if(arr[j]>arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
對上面中arr.length-x-1說明 
-x  是爲了每次少比一次,每次比完以後最後的那個元素位值就確定了,所以沒有必要再比
-1  是防止數組越界,當我i=0的事,j最後一次就是arr.length,如果不減1,則會出現數組訪問越界

把上面的代碼中的choose(arr)改成bubbleSort(arr)可以測試冒泡排序的算法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章