原博主原理和基本思想以及例子,可以说很详细了。
https://blog.csdn.net/qq_39404258/article/details/81806431
跟着原博客的思想,写的Java代码,理解原博主说的,就可以看懂这段代码啦
package com.portal;
import java.util.Arrays;
/**
* 快速排序算法
* @author xiaobei
*
*/
public class QuickSort {
/**
*
* @param arr 要排序的数组
* @param low 区间开始地址 也就是索引
* @param high 区间结束地址
*/
public static void quickSort(int[] arr,int low,int high ) {
int l = low; //区间开始地址
int h = high;//区间结束地址
if (l > h) {//防止索引越界
return;
}
int temp = arr[low]; //数组的第一个值作为基数
//1.创建l=0;h=5;temp=6
//2.l=0;h=3;temp=6
while (l < h) {
//从右开始找出最小的数
while (l < h && arr[h] > temp) {
h--;
}
//从左开始找出最大的数
while (l<h && arr[l] <= temp) {
l++;
}
if (l<h) { //交换
int swap = arr[l];
arr[l] = arr[h];
arr[h] = swap;
}
}
//交换temp
temp = arr[l];
arr[l] = arr[low];
arr[low] = temp;
//对左边进行递归排序
quickSort(arr, low, l - 1);
//对右边进行递归排序
quickSort(arr, l + 1, high);
}
public static void main(String[] args) {
int[] arr={16,23,72,13,18,9,24,10,8};
System.out.println(Arrays.toString(arr));
quickSort(arr,0,arr.length - 1);
System.out.println(Arrays.toString(arr));
}
}