转载自这个文章,点击下面的连接就到了哦!思想看看他的,很棒!
但是他的代码有问题
这里是我自己写的基于 java的
public static void QuickSort(int a[], int left, int right) {
int i, j, temp, tp;
//System.out.println(left +" ----- "+right);
i = left; //最左位置
j = right; //最右位置
if (left > right) //递归结束条件
return;
temp = a[left]; //暂存基准数
while (i != j) //当i和j不重合时
{
while (a[j] >= temp && i < j) //从右往左寻找小于基准数的值
j--;
while (a[i] <= temp && i < j) //从左往右寻找大于基准数的值
i++;
//找到了且i<j则交换数值
if (i < j) {
tp = a[i];
a[i] = a[j];
a[j] = tp;
}
}
//将基准数和i、j的相遇数值进行交换
a[left] = a[i];
a[i] = temp;
//应用递归对此时基准数的左边进行快速排序
QuickSort(a, left, i - 1);
//应用递归对此时基准数的右边进行快速排序
QuickSort(a, i + 1, right);
}
public static void main(String[] args) {
{
//int[] a = {6 1 2 7 9 3 4 5 10 8};
int[] a = new int[10];
Scanner scanner = new Scanner(System.in);
System.out.println("请输入 10 个数: \n");
for (int i = 0; i < 10; i++) {
a[i] = scanner.nextInt();
}
System.out.println("你输入的这10数是:\n");
for (int i = 0; i < 10; i++)
System.out.print(" " + a[i]);
QuickSort(a, 0, a.length-1); //调用快速排序函数
System.out.println("\n排序完成后的结果是:\n");
for (int i = 0; i < 10; i++)
System.out.print(" "+a[i]);
System.out.println();
}
}
运行结果