快速排序

来源:互联网 发布:mac预览图片 拖动 编辑:程序博客网 时间:2024/06/04 17:59
  1. 简单思想:利用分治法,默认取数组第一个元素作为参考点,以参考点为例,把数组分成一半小于参考点,另一半大于参考点。以原始数据为例4,1,2,5,9,6,7,第一次排序为4,1,2,5,9,6,7,再用相同的方法,对5左边进行排序,对5右边进行排序。
  2. 代码实现
public class Test6 {    public static void main(String[] args) {        // TODO Auto-generated method stub        int[]  num={4,1,2,5,9,6,7};        quicksort(num,0,num.length-1);        for(int i=0;i<num.length;i++)        {            System.out.print(num[i]+"   ");        }    }    private static void quicksort(int[] num, int i, int j) {        // TODO Auto-generated method stub        if (i<j) {            int key=num[i];//基准            int left=i;            int right=j;            //循环完一次就相当于一次排序            while (left<right) {                while(left<right&&num[right]>key)                {                    right--;                }                if (left<right) {                    num[left]=num[right];                    left++;                }                while(left<right&&num[left]<key)                {                    left++;                }                if (left<right) {                    num[right]=num[left];                    right--;                }            }            num[left]=key;            quicksort(num, i, left-1);            quicksort(num, left+1, j);        }    }}