快速排序, 又被称为分区交换排序, 是交换排序的一种实现.
快速排序基本思想是:
首先将等待排序的所有列表作为当前待排序的区域, 选择第一个记录作为支点(pivot), 凡是比该节点小的数据排到前面, 比该节点大的数据排到后面;
一趟排序完成后, 假设支点(pivot)在第m个, 再将支点(pivot)前面和后面的数据重复上述操作;
直到排序子数组还剩0或者1个.
这个是快速排序的demo, 采用递归思想:
public class QuickSort {
public static int[] a = {0,2,1,5,6,4,3,7,9,8};
public static void quickSort(int l, int u) {
if(l >= u) {
return ;
}
int m = l;
for(int i=l+1;i<=u;i++) {
if(a[i] < a[l]) {
swap(++m, i);
}
}
swap(l, m);
quickSort(l, m-1);
quickSort(m+1, u);
}
private static void swap(int i,int m) {
int temp = a[i];
a[i] = a[m];
a[m] = temp;
}
public static void main(String[] args) {
print(a);
quickSort(0, a.length-1);
print(a);
}
private static void print(int[] a) {
for(int i : a) {
System.out.print(i + " ");
}
System.out.println();
}
}
、