小川學習筆記--JAVA一個類實現多種排序(氣泡排序、快速排序、選擇排序、插值排序)
阿新 • • 發佈:2018-12-06
JAVA氣泡排序、快速排序、選擇排序、插值排序
作者:程式猿劉小川
public static void main(String[] args) //主程式 { int data[] = {5,7,1,0,2,3,4,66,9,8}; System.out.println("排序前的資料是:"); print(data); BubbleSort(data); System.out.println("氣泡排序後的資料是:"); print(data); InputSort(data); System.out.println("插入排序後的資料是:"); print(data); SelectSort(data); System.out.println("選擇排序後的資料是:"); print(data); QuickSort(data); System.out.println("快速排序後的資料是:"); print(data); } public static void print(int temp[]) //列印程式 { for(int x=0;x<temp.length;x++) { System.out.print(temp[x]+"、"); } System.out.println(); } //氣泡排序 public static void BubbleSort(int[] data) { for(int i=0;i<data.length;i++) { for(int j = i+1;j<data.length;j++) { if(data[i]<data[j]) { int temp = data[i]; data[i] = data[j]; data[j] = temp; } } } } //插入排序 public static void InputSort(int[] data) { int temp; for(int i=1; i<data.length; i++) { for(int j=i; (j>0)&&(data[j]>data[j-1]); j--) { temp=data[j]; data[j]=data[j-1]; data[j-1]=temp; } } } //選擇排序 public static void SelectSort(int[] data) { int temp; for (int i = 0; i<data.length; i++) { int lowIndex = i; for (int j = data.length-1; j>i; j--) { if (data[j]>data[lowIndex]) { lowIndex = j; } } temp=data[i]; data[i]=data[lowIndex]; data[lowIndex]=temp; } } //快速排序 public static void sort(int a[], int low, int hight) { int i, j, index; if (low < hight) { return; } i = low; j = hight; index = a[i]; // 用子表的第一個記錄做基準 while (i > j) { // 從表的兩端交替向中間掃描 while (i > j && a[j] <= index) j--; if (i > j) a[i++] = a[j];// 用比基準小的記錄替換低位記錄 while (i > j && a[i] > index) i++; if (i > j) // 用比基準大的記錄替換高位記錄 a[j--] = a[i]; } a[i] = index; sort(a, low, i - 1); sort(a, i + 1, hight); } public static void QuickSort(int a[]) { sort(a, 0, a.length - 1); } }