快速排序

来源:互联网 发布:手机淘宝怎么引流 编辑:程序博客网 时间:2024/04/28 10:05
public class QuickSort {public static int[] quickSort(int array[],int _left,int _right){int left=_left;//_left为初始left下标不做变动int right=_right;//_right为初始right下标也不做变动int flag=0;//flag用来和数组中left下标和right下标的值进行比较if(left<=right){//确定初始left<rightflag=array[left];//将第一个值取出放到flag中,while(left!=right){//当左下标和右下标交叉时,一次排序完成while(left<right&&array[right]>=flag){//如果下标未交叉,且右下标的值小于flag,跳出循环,将之放入左下标位置right--;}array[left]=array[right];while(left<right&&array[left]<=flag){//如果下标未交叉,且左下标的值大于flag,跳出循环,将之放入右下标位置left++;}array[right]=array[left];}//在左右下标交叉处,将flag放入array[left]=flag;//遍历交叉左边的数组quickSort(array,_left,left-1);//遍历交叉右边的数组quickSort(array,right+1,_right);}return array;}public static void main(String[] args) {int array[]={6,9,8,5,7,4};System.out.println("排序前:");for(int i:array){System.out.print(i+" ");}int[] quickSort = quickSort(array,0,array.length-1);System.out.println("排序后:");for(int i:quickSort){System.out.print(i+" ");}}}

该方法的基本思想是:

1.先从数列中取出一个数作为基准数。

2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。

3.再对左右区间重复第二步,直到各区间只有一个数。


原创粉丝点击