快速排序

快速排序--從數組中隨機找一個基準數據,使基準數據左邊都是小於等於這個基準數據的,右邊都大於等於基準數據,遞歸調用實現排序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); /* 遞歸調用 */
         }
     }

連接:http://www.javashuo.com/article/p-zmhokdfe-gp.html數組

相關文章
相關標籤/搜索