public static void QSort(int[] array, int left, int right) { //left数组的最小下标,right数组最大下标 if (left > right) { //判断本次是否执行 return; } int low = left; int high = right; int key=array[low]; //将数组第一个数定为基准 while(low<high){ while(low<high && array[high]>key) //从后往前,直到找到小于基准的数 high--; array[low]=array[high]; //小数移动到前面 while(low<high && array[low]<key) //从前往后,直到找到大于基准的数 low++; array[high]=array[low]; //大数移动到后面 } array[low]=key; //此时low在中间,将基准放入 QSort(array,left,low-1); //小数组递归 QSort(array,low+1,right); //大数组递归 }
原文:https://www.cnblogs.com/aaaadioppa/p/14742049.html