快速排序
快速排序演示
java
public static void quicksort(int[] arr,int start,int end) {
int low = start; //将低位标记至第一位
int high = end; //将高位标记在最后一位
int standard = arr[start];//默认取第一位作为标准值
if(start<end) { //只有在start和end不重合的情况下进行递归
while(low<high) { //在低位高位重合之前进行循环,目的是将数据(按照标准值)分成两边
while(low<high && standard<=arr[high]) {//当高位大于标准值时
high--; //高位指向前一位,继续判断.
} //跳出循环,此时高位数值小于标准值
arr[low] = arr[high]; //将高位(较小数)放到低位
while(low<high && standard>=arr[low]) { //当低位小于标准值时
low++; //低位指向其后一位,继续判断
} //跳出循环,此时低位数值大于标准值
arr[high] = arr[low]; //将低位(较大数)放到高位
}
arr[low] = standard; //当低高位重合时,将取出的标准值赋予
quickSort(arr,start,low); //将标准值及其之前部分进行递归
quickSort(arr,low+1,end); //将标准值之后的部分进行递归
} //start和end重合时递归结束
}