快速排序法 Java實現
阿新 • • 發佈:2018-12-11
快速排序法又叫二分法排序:
import java.util.Random; public class Quicksort { public static void main(String[] args) { // TODO Auto-generated method stub int[] arr =new int[100]; Random rand=new Random(); for (int i = 0; i < arr.length; i++) { arr[i]=rand.nextInt(500); //定義 [0,500)之內的隨機數 } quickSort(arr, 0, arr.length-1); for(int i = 0;i<arr.length;i++){ if (i==0) { System.out.print("快速排序 聖墟: [ "+arr[i]+","); }else if (i==arr.length-1) { System.out.print(arr[i]+" ]"); System.out.println(); }else { System.out.print(arr[i]+","); } } } public static void quickSort(int[] arr,int low,int high){ int i,j,temp,t; if(low>high){ return; } i=low; j=high; //temp就是基準位 temp = arr[low]; while (i<j) { //先看右邊,依次往左遞減 while (temp>=arr[j]&&i<j) { j--; } //再看左邊,依次往右遞增 while (temp<=arr[i]&&i<j) { i++; } //如果滿足條件則交換 if (i<j) { t = arr[j]; arr[j] = arr[i]; arr[i] = t; } } //最後將基準為與i和j相等位置的數字交換 arr[low] = arr[i]; arr[i] = temp; //遞迴呼叫左半陣列 quickSort(arr, low, j-1); //遞迴呼叫右半陣列 quickSort(arr, j+1, high); } }