快速排序--從數組中隨機找一個基準數據,使基準數據左邊都是小於等於這個基準數據的,右邊都大於等於基準數據,遞歸調用實現排序html
快速排序屬於不穩定的排序算法(算法穩定性 -- 假設在數列中存在a[i]=a[j],若在排序以前,a[i]在a[j]前面;而且排序以後,a[i]仍然在a[j]前面。則這個排序算法是穩定的!)java
java實現代碼:算法
public static void quickSort(int[] a, int l, int r) { if (l < r) { int i,j,x; i = l; j = r; x = a[i]; while (i < j) { while(i < j && a[j] > x) j--; // 從右向左找第一個小於x的數 if(i < j) a[i++] = a[j]; while(i < j && a[i] < x) i++; // 從左向右找第一個大於x的數 if(i < j) a[j--] = a[i]; } a[i] = x; quickSort(a, l, i-1); /* 遞歸調用 */ quickSort(a, i+1, r); /* 遞歸調用 */ } }