public class QuickSort<T extends Comparable> {
public static void main(String[] args) {
Integer[] arr = new Integer[]{1, 2, 2, 5, 7, 8, 3, 2, 2};
QuickSort quickSort = new QuickSort();
quickSort.quickSort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
public void quickSort(T[] array, int low, int high) {
if (low >= high) {
return;
}
int pointer = partition(array, low, high);
quickSort(array, low, pointer - 1);
quickSort(array, pointer + 1, high);
}
public int partition(T[] array, int low, int high) {
//找一个值作为比较对象
T tag = array[high];
int t = low;
for (; low < high; low++) {
if (array[low].compareTo(tag) == -1) {
if (t != low) {
T tmp = array[low];
array[low] = array[t];
array[t] = tmp;
}
t++;
}
}
//将比较对象移动到中间位置
T tmp = array[t];
array[t] = array[high];
array[high] = tmp;
return t;
}
}
java 快速排序
最新推荐文章于 2024-05-19 21:34:53 发布