本帖最后由 赵喜平 于 2013-4-3 22:16 编辑
- class Arr {
- public static void main(String args[])
- {
- int arr[] = { 5, 3, 8, 2, 0, 9, 1, 7 };//35208179,
- quick(arr, 0, (arr.length-1));
- printArr(arr);
-
- }
-
- public static void quick(int arr[],int left,int right)
- {
- /*
- * 快速排序是选择一个key值,首先和从最后一个元素从后向前比较,
- * 大于最后一个换位置,然后和第一个元素从前往后比较,小于第一个换位置,
- * 这样以此类推*/
- int temp = getStart(arr,left,right); //此处会标识有栈溢出,这么回事?????????????
- quick(arr,left,temp); //??????????、、
- quick(arr, temp + 1,right);
- }
- public static int getStart(int arr[],int left,int right)
- {
- int i = 0, j = 0, key = 0;
-
- left = i;
- right = j;
-
- key = left;
-
- if(arr.length==0) return 0;
-
- while(left < right)
- {
- while(arr[j] > arr[key])
- {
- --j;
- }
- swap(arr,arr[j],arr[key]);
-
- while(arr[i] < arr[key])
- {
- --j;
- }
- swap(arr,arr[i],arr[key]);
- }
-
-
- return left;
- }
-
- public static void swap(int arr[],int i,int j)
- {
- int temp = arr[i];
- arr[i] = arr[j];
- arr[j] = temp;
- }
- public static void printArr(int arr[]) {
- for (int i : arr)
- {
- System.out.print(i + " ");
- }
- System.out.println();
- }
- }
复制代码 |