欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

排序算法-快速排序

程序员文章站 2022-05-03 23:51:09
package com.test.sort;import java.util.Arrays;/** * 快速排序基本思想: * 选定一个元素的值作为中间值,一趟快速排序下来,比它小的放到左边,比它大的放入右边 * 再分别对它左边和右边递归快速排序直至左边和右边的下标相等退出递归 * */public class QuickSortDemo { public static void main(String[] args) { int[] arr=new int...
package com.test.sort;

import java.util.Arrays;

/**
 * 快速排序基本思想:
 *  选定一个元素的值作为中间值,一趟快速排序下来,比它小的放到左边,比它大的放入右边
 *  再分别对它左边和右边递归快速排序直至左边和右边的下标相等退出递归
 *
 */
public class QuickSortDemo {

    public static void main(String[] args) {
        int[] arr=new int[]{1,2,3,1,4,5};
        quickSort(arr,0,arr.length-1);
        System.out.println(Arrays.toString(arr));
    }

    /**
     *
     * @param arr
     * @param l
     * @param r
     */
    public static void quickSort(int[] arr,int l,int r){
        int left=l;
        int right=r;
        int mid=arr[(left+right)/2];
        int index=(left+right)/2;
        while (left<right){
            while(mid>arr[left]){
                left++;
            }
            while (mid<arr[right]){
                right--;
            }
           if(left==right){
               break;
           }
            int temp=arr[left];
            arr[left]=arr[right];
            arr[right]=temp;
            if(arr[left]==mid){
                right--;
            }
            if(arr[right]==mid){
                left++;
            }
        }
        right--;
        left++;
        if(l<right){
            quickSort(arr,l,right);
        }
        if(r>left){

            quickSort(arr,left,r);
        }

    }
}

本文地址:https://blog.csdn.net/sshbaibai/article/details/109640620