import java.util.Scanner;
public class CQuickSort {
private int[] a;
private int size;
public CQuickSort() {
size = 0;
}
public void quicksort(int left, int right) {
if (left >= right) {
return;
}
int pos = partition(left, right);
quicksort(left, pos);
quicksort(pos + 1, right);
}
private int partition(int left, int right) {
int key = a[left];
while (left < right) {
/* 从右向左寻找小于key的元素 */
while (left < right && a[right] >= key) {
right--;
}
a[left] = a[right];
/* 从左向右寻找大于key的元素 */
while (left < right && a[left] <= key) {
left++;
}
a[right] = a[left];
}
a[left] = key;
return left;
}
public static void main(String[] args) {
CQuickSort quickSort = new CQuickSort();
quickSort.input();
quickSort.display();
quickSort.quicksort(0, quickSort.getSize() - 1);
quickSort.display();
}
public void input() {
System.out.println("输入数组大小");
Scanner scan = new Scanner(System.in);
size = scan.nextInt();
a = new int[size];
size = 0;
for (int i = 0; i < a.length; i++) {
insert((int) (Math.random() * 200));
}
System.out.println("输入完成");
}
public void insert(int val) {
a[size++] = val;
}
public void display() {
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
System.out.println();
}
public int getSize() {
return size;
}
}
温故而知新-快速排序(JAVA)
最新推荐文章于 2024-08-23 15:54:50 发布