代码如下:
package code1;
import java.util.Scanner;
public class QuickSort
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
System.out.print("请输入数组的长度: ");
int n = scanner.nextInt();
int[] array = new int[n];
System.out.print("请输入需要排序的数组:");
for (int i = 0; i < array.length; i++)
array[i] = scanner.nextInt();
quicksort(array,0,array.length-1);
print(array);
}
public static void print(int[]array) //输出排序后的数组
{
System.out.print("快速排序后的数组:");
for (int i = 0; i <array.length ; i++)
{
System.out.print(array[i]+" ");
}
}
private static void quicksort(int[]array,int begin,int end)
{
if (begin<end)
{
int index=getIndex(array,begin,end);
quicksort(array,begin,index-1);
quicksort(array,index+1,end);
}
}
private static int getIndex(int[]array,int begin,int end)//确定轴点的位置
{
int pivot=array[begin];
while (begin<end)
{
while (begin<end)
{
if (pivot < array[end]) //右边元素>轴点
end--;
else
{ 右边元素<=轴点
array[begin] = array[end];
begin++;
break;
}
}
while (begin<end)
{
if (pivot > array[begin])//左边元素<轴点
begin++;
else //左边元素>=轴点
{
array[end] = array[begin];
end--;
break;
}
}
}
array[begin]=pivot;
return begin;
}
}
输出: