本文主要实现快速排序的一种写法。如有不对请指出。
关于快速排序的原理
参考http://www.sohu.com/a/246785807_684445。
具体代码实现
public static void quitSort(int[] array, int start, int end) {
if (null==array||array.length < 2 )
return ;
if(start < 0 || end >= array.length || start > end)
return ;
int pivot = array[start];
int index = start;
int left = start;
int right = end;
// 标志,轮流右左 右左
boolean flag = true;
while (left < right) {
// 从右边往左排
if (flag) {
if (array[right] >= pivot)
right--;
else {
flag = false;
array[index] = array[right];
left++;
index = right;
}
}
// 从左往右排
else {
if (array[left] <= pivot) {
left++;
} else {
flag = true;
array[index] = array[left];
right--;
index = left;
}
}
}
array[index] = pivot;
// 这里必须写start 一开始没想清楚写成quitSort(array,0,left-1);
quitSort(array, start, index - 1);
quitSort(array, index + 1, end);
}
测试代码如下
public static void main(String[] args) {
Random r = new Random();
int[] list = new int[10];
for (int i = 0; i < list.length; i++) {
list[i] = r.nextInt(10);
}
for (int i : list) {
System.out.print(i);
}
System.out.println();
System.out.println("--------------");
quitSort(list, 0, list.length - 1);
for (int i : list) {
System.out.print(i);
}
}