選擇排序
class TestTeacher{ public static void selectSort(int[] arr){ for(int y=0;y<arr.length;y++){ for(int x=0;x<arr.length-1;x++){ if(arr[x]<arr[y]){ int temp = arr[x]; arr[x] = arr [y]; arr[y] = temp; } } } } public static void main(String[] args){ int[] arr = {1,2,4,7,2,7,3,7}; printArray(arr); selectSort(arr); printArray(arr); } public static void printArray(int[] arr){ System.out.print("["); for(int x = 0;x <arr.length;x++){ if(x!=arr.length-1){ System.out.print(arr[x]+","); }else { System.out.print(arr[x]+"]"); } } } }
冒泡排序:相鄰的兩個元素進行比較,如果符合條件換位
class TestTeacher{ public static void selectSort(int[] arr){ for(int y=0;y<arr.length-1;y++){ for(int x=0;x<arr.length-y-1;x++){ //-y:讓每一次比較減少, -1:避免角標越界 if(arr[x]>arr[x+1]){ int temp = arr[x]; arr[x]= arr[x+1]; arr[x+1]=temp; } } } } public static void main(String[] args){ int[] arr = {1,2,4,7,2,7,3,7}; printArray(arr); selectSort(arr); printArray(arr); } public static void printArray(int[] arr){ System.out.print("["); for(int x = 0;x <arr.length;x++){ if(x!=arr.length-1){ System.out.print(arr[x]+","); }else { System.out.print(arr[x]+"]"); } } } }
無論什麼排序,都需要對滿足條件的元素進行位置置換
所以可以把這部分相同的代碼提取出來,單獨封裝成一個函數
public static void swap(int[] arr,int a ,int b){ int temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; }
實際開發時,可以使用java提供的排序
import java.util.*;
Arrays.sort(arr);