快速排序算法(quickSort)

快速排序算法(quickSort)

基本思想

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按照此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序数列。

应用场景

数据量大并且是线性结构

短处

有大量重复数据的时候,性能不好
单向链式结构处理性能不好(一般来说,链式都不使用)

代码实现

  @Test
    public void testQuickSort(){
        int[] array=new int[]{3,2,1,5,6,4};
        quickSort(array,0,array.length-1);
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i]+" ");
        }

    }

 /**
     * 快速排序从小到大
     * @param nums
     * @param left
     * @param right
     */
    public void quickSort(int[] nums,int left,int right){
        if(right-left<=0){
            return;
        }else if(left<right){
           int middle=getMiddle(nums,left,right);
            quickSort(nums,left,middle-1);
            quickSort(nums,middle+1,right);
        }else{
            return;
        }

    }

  /**
     * 左边小右边大
     * @param nums
     * @param left
     * @param right
     * @return
     */
    private int getMiddle(int[] nums, int left, int right) {
        int pivot=nums[left];
        while (left<right){
             while (nums[right]>=pivot&&left<right){
                 right--;
             }
             nums[left]=nums[right];
             while (nums[left]<=pivot&&left<right){
                 left++;
             }
             nums[right]=nums[left];
        }
        nums[left]=pivot;
        return left;
    }

快速排序算法就讲到这里,谢谢大家,再见!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容