三人行,必有我师,仅仅提供一个思考的方向
/**
* @author jishali
*
*/
public class QuickSort {
public static int divide(int[] array, int l, int r) {
int temp = array[l]; // 轴点元素
while (l < r) {
while (l < r) {
if (temp < array[r]) { // 如果是 <= ,当相同元素较多时,会出现轴点元素temp分布不均匀,
r--;
} else {
array[l] = array[r];
l++;
break;
}
}
while (l < r) {
if (temp > array[l]) {
l++;
} else {
array[r] = array[l];
r--;
break;
}
}
}
array[l] = temp; // 将轴点元素放在最后的坑位
return l;
}
public static void quickSort(int[] array, int l, int r) {
if (l>r) {
return;
}
int middle = divide(array, l, r);
quickSort(array, l, middle - 1);
quickSort(array, middle + 1, r);
}
public static void result(int[] array) {
for (int i : array) {
System.out.print(i + " ");
}
}
public static void main(String[] args) {
int[] array = {3,5,6,2,9,0};
quickSort(array, 0, array.length-1);
result(array);
}
}
package compare;
public class QuickSort {
public static int divide(int[] array, int L, int R) {
int point = array[R];
int j = L;
for (int i = L; i < R; i++) {
if (array[i] < point) {
int temp = array[j];
array[j] = array[i];
array[i] = temp;
j++;
}
}
int temp = array[j];
array[j] = array[R];
array[R] = temp;
// 查看每一次破风的结果
// for (int re : array) {
// System.out.print(re + " ");
// }
// System.out.println(" : run");
return j;
}
public static void quickSort(int[] array, int l, int r) {
if (l > r) {
return;
}
int middle = divide(array, l, r);
quickSort(array, l, middle - 1);
quickSort(array, middle + 1, r);
}
public static void result(int[] array) {
for (int i : array) {
System.out.print(i + " ");
}
}
public static void main(String[] args) {
int[] array = { 10, 4, 7, 2, 9, 0, 7 };
quickSort(array, 0, array.length - 1);
result(array);
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- niushuan.com 版权所有 赣ICP备2024042780号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务