分组后的数组:4,5,14,23,52,11,
分组后的数组:4,5,11,23,52,14,
分组后的数组:4,5,11,14,52,23,
分组后的数组:4,5,11,14,23,52,
排序后的数组:4,5,11,14,23,52,
package datastructure;
public class QuickSort {
public QuickSort() {
}
public static void quickSort(int[] datas, int low, int high) {
if (low < high) {
int p = partition(datas, low, high);
quickSort(datas, low, p - 1);
quickSort(datas, p + 1, high);
}
}
public static int partition(int[] datas, int low, int high) {
int index = low - 1;
int last = datas[high];
for (int j = low; j < high; j++) {
if (datas[j] < last) {
index++;
if (j != index) {
int tmp = datas[j];
datas[j] = datas[index];
datas[index] = tmp;
}
}
}
index++;
if (index != high) {
int tmp = datas[high];
datas[high] = datas[index];
datas[index] = tmp;
}
System.out.print("分组后的数组:");
for(int i=0;i<datas.length;i++){
System.out.print(datas[i]+",");
}
System.out.println();
return index;
}
public static void main(String[] args) {
int[] datas = { 11, 4, 14, 23, 52, 5 };
QuickSort.quickSort(datas, 0, datas.length - 1);
System.out.print("排序后的数组:");
for(int i=0;i<datas.length;i++){
System.out.print(datas[i]+",");
}
}
}
if (j != index)
if (index != high)
这两个判断我看网上一般人都没加,如果是不加的话有可能造成元素本身的交换,浪费资源