Java算法之快速排序
程序员文章站
2022-03-24 13:53:59
...
举例:要排序的数组 int[] arr={7,9,8,4,5,1,6,3,2,0};
从小到大排列:
/*
快速排序
*/
public class QuickSort {
private static void QuickSort(int[] arr,int left,int right)
{
if(left<right)//保证递归时至少有2个元素
{
int pivot=arr[left];//初始化保存基准
int i=left,j;//初始化i,j
for(j=left+1;j<=right;j++){
if(arr[j]<pivot)//如果此处元素小于基准,则把此元素和i+1处元素交换,并将i加1,如大于或等于基准则继续循环
{
int temp=arr[j];
arr[j]=arr[i+1];
arr[i+1]=temp;
i++;
}
}
arr[left]=arr[i];//交换i处元素和基准
arr[i]=pivot; //把基准值放到合适的位置
QuickSort(arr, left, i-1);//递归调用,分治思想,对左边的子数组进行快速排序
QuickSort(arr, i+1, right);//对右边的子数组进行快速排序
}
}
public static void main(String[] args)
{
int[] arr={7,9,8,4,5,1,6,3,2,0};
QuickSort(arr, 0, arr.length-1);
for(int b=0;b<arr.length;b++){//输出
System.out.println(arr[b]);
}
}
}
运行结果:
0
1
2
3
4
5
6
7
8
9