快速排序

2020-08-03  本文已影响0人  cg1991

个人主页:https://chengang.plus/

文章将会同步到个人微信公众号:Android部落格

1.1 描述

快速排序算法通过多次比较和交换来实现排序,其排序流程如下:

1.2 代码

public class HelloWorld {
    static int[] numbers = {5,4,3,7,2,1,8,9,6,2};
    
    public static void quickSort(){
        int size = numbers.length;
        sort(0,size - 1);
    }
    
    public static void sort(int left,int right){
        int front = left;
        int later = right;
        int standardNumber = numbers[left];
        while(front < later){
            //front large number to later,and later small number at front
            while(numbers[front] < standardNumber && front < later){
                ++front;
            }
            //later small number to front, and front large number to later
            while(numbers[later] > standardNumber && front < later){
                --later;
            }
            if(numbers[front] == numbers[later] && front < later){
                ++front;
            } else {
                int temp = numbers[front];
                numbers[front] = numbers[later];
                numbers[later] = temp;
            }
        }
        if(front - 1 > left){
            sort(left ,front - 1);
        }
        if(later + 1 < right){
            sort(later + 1 ,right);
        }
    }
    public static void main(String []args) {
        quickSort();
        for(int value : numbers){
            System.out.println("quick value is:" + value);
        }
    }
}

1.3 总结

5437218962

2437218965

2435218967

2435218967

2431258967

过程如下图所示:

快速排序.jpg
上一篇 下一篇

猜你喜欢

热点阅读