【JAVA】快速排序
时间:2010-10-06 来源:老马睡不醒
这算法原理知道,但代码写起来总是丢三落四,这回写出来备份。。。
import java.util.*;
public class QSort {
static int partition(int[] a, int l, int r) {
int tmp = a[l];
while (l < r) {
//注意:a[r] >= tmp 以及 a[l] <= tmp 中 = 不能丢,否则有相同数字的话死循环
while (l < r && a[r] >= tmp) r--;
a[l] = a[r];
while (l < r && a[l] <= tmp) l++;
a[r] = a[l];
}
a[l] = tmp;
return l;
}
static void quickSort(int[] a, int l, int r) {
if (l < r) {
int privot = partition(a, l, r);
quickSort(a, l, privot-1);
quickSort(a, privot+1, r);
}
}
static void print(int[] a) {
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
System.out.println();
}
public static void main(String[] args) {
Random rand = new Random();
int[] a = new int[25];
for (int i = 0; i < a.length; i++) {
a[i] = rand.nextInt(100);
}
print(a);
quickSort(a, 0, a.length-1);
print(a);
}
}
相关阅读 更多 +










