/** * JAVA排序算法实现代码-快速(Quick Sort)排序。 * * @author 老紫竹 JAVA世纪网(java2000.net) * */ public class Test { public static int[] a = { 10, 32, 1, 9, 5, 7, 12, 0, 4, 3 }; // 预设数据数组
public static void main(String args[]) {
System.out.print("排序前: "); for (int i = 0; i < a.length; i++) System.out.printf("%3s", a[i]);
System.out.println("");
int Index = a.length;
QuickSort(0, Index - 1, Index); // 快速排序
// 排序后结果
System.out.print("排序后: "); for (int i = 0; i < a.length; i++) System.out.printf("%3s", a[i]);
System.out.println(""); }
public static void QuickSort(int Left, int Right, int Index) { int i, j, k; // 循环计数变量
int Pivot; // 枢纽变量
int Temp; // 暂存变量
i = Left; // 设定左指针
j = Right; // 设定右指针
Pivot = a[Left]; // 取最左边的元素
if (i < j) { do { while (a[i] <Pivot && i < Right) // 从左往右找比Pivot大的值
{ i++; } while (a[j] > Pivot && j > Left) // 从右往左找比Pivot小的值
{ j--; }
if (i < j) // 交换a[i]和a[j]
{ Temp = a[i]; a[i] = a[j]; a[j] = Temp; } } while (i < j); if (i > j) { Temp = a[Left]; // 交换a[Left]和a[j]
a[Left] = a[j]; a[j] = Temp;
// 打印目前排序结果
System.out.print("排序中: "); for (k = 0; k <= Index; k++) { System.out.printf("%3s", a[k]); } System.out.println(""); } QuickSort(Left, j - 1, Index); // 排序左半边
QuickSort(j + 1, Right, Index); // 排序右半边
} } }
|