-
選擇第一個數爲中間數,小於中間數的數放在左邊,大於中間數的數放在右邊。
-
遞歸的將中間數左邊和右邊的數都按照第一步進行,直到不能遞歸。
-
public class QuickSort { public static void main(String[] args) { int[] str={21,5,6,3,9,51,1,2}; QuickSort(str,0,str.length-1); System.out.println(Arrays.toString(str)); } public static void QuickSort(int[] str,int left,int rghit){ int l=left; //左下標 int r=rghit;//右下標 int p =str[(l+r)/2];//中間的數 while (l<r){ while (str[l]<p){ l++; } while (str[r]>p){ r--; } if (l==r){ break; } int tem = str[l]; str[l]=str[r]; str[r]=tem; if (str[l]==p){ l--; } if (str[r]==p){ l++; } } if (l==r){ l++; r--; } if (left<l){ QuickSort(str, l, rghit); } if (rghit>r){ QuickSort(str, left, r); } } }
十大經典算法之快速排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.