快速排序 java实现

转载自:

https://blog.csdn.net/shujuelin/article/details/82423852

int[] arr={6,3,5,1,7,8,11,4,9};

正序排列。

1.首先拿到一个基准数,例如那数组第一个元素 6为基准数,

2.然后从左边第一个数开始跟基准数比较,从右边第一个数开始跟基准数比较。

3.从左边开始查找比6大的,从右边开始查找比6小的

4.两边都找到之后,将左右两边找到的数字互换位置,这样大的数字就被放在了右边,小的数字就放在了左边。

5.循环一轮之后,最终左右探测会遇到。这时候,需要把基准数和当前相遇的数字交换。

6.递归调用

package com.citi.test.demo;

public class QuickSort1 {
    
    public static void quickSort(int[] arr,int low,int high){
        int i,j,temp,t;
        i=low;
        j=high;
        if(i>j){
            return;
        }
        temp=arr[low];
        while(i<j){
            //temp跟右边开始比较
            while(temp<=arr[j]&&i<j){
                j--;
            }
            while(temp>=arr[i]&&i<j){
                i++;
            }
            if(i<j){
                t=arr[i];
                arr[i]=arr[j];
                arr[j]=t;
            }
        }
        //表示i=j
        arr[low]=arr[i];
        arr[i]=temp;
        //左半边数组执行快排
        quickSort(arr, low, j-1);
        //右半边数组执行快排
        quickSort(arr,j+1,arr.length-1);
    }
    
    public static void main(String[] args) {
        int[] arr={6,3,5,1,7,8,11,4,10,9};
        quickSort(arr,0,arr.length-1);
        for(int i=0;i<arr.length-1;i++){
            System.out.println(arr[i]);
        }
    }
}
View Code

  

原文地址:https://www.cnblogs.com/liumy/p/12026039.html