博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速排序
阅读量:4060 次
发布时间:2019-05-25

本文共 1575 字,大约阅读时间需要 5 分钟。

快速排序的思路很简单,它的思想就是分治和递归,归并排序也使用的是分治算法。

1、把待排序数组的起始值作为为基准值,

2、从数组下标为1开始的一段数组,使用头尾两个指针,然后先从尾部(这个顺序不能错,不能从头部开始)寻找第一个比基准值小的数,然后交换位置(实际上使用的时候,并不是交换位置,只是把与基准值比较的那个元素挪一下位置,基准值等到最后的时候放到最后的位置即可。结束条件是:头尾指针不发生反向。这样一次过程基准值就放到了它排完序的最终位置。

3、对基准值左右两边递归使用快速排序。

这个算法实现起来比归并排序要简单。

package Sort;public class QuickSort {    /**     * 快速排序     * @param array 待排序数组     * @param start 由于是递归函数,所以函数的参数不能那么任性,得设计好,这是待排序数组的起始下标     * @param end 待排序数组的终止下标     */    public static void quickSort(int[] array,int start,int end){        if(start >= end || end > array.length - 1){//保证了至少有两个元素            return;        }        int baseValue = array[start];        int baseIndex = start;        int head = start + 1, tail = end;        while(head <= tail) {            while (head <= tail && array[tail] >= baseValue) {                tail--;            }            if(head > tail){                break;            }else{                array[baseIndex] = array[tail];                baseIndex = tail;            }            while(head <= tail && array[head] <= baseValue){                head++;            }            if(head > tail){                break;            }else{                array[baseIndex] = array[head];                baseIndex = head;            }        }        array[baseIndex] = baseValue;        quickSort(array,start,baseIndex-1);        quickSort(array,baseIndex+1,end);    }    public static void main(String[] args){        int[] array = {1,9,89,2,12,323,122,57782,28,99,12,2,1212};        quickSort(array,0,array.length - 1);        ArrayPrint.arrayPrint(array);    }}

 

 

转载地址:http://tizji.baihongyu.com/

你可能感兴趣的文章
Python自动化之pytest常用插件
查看>>
Python自动化之pytest框架使用详解
查看>>
【正则表达式】以个人的理解帮助大家认识正则表达式
查看>>
性能调优之iostat命令详解
查看>>
性能调优之iftop命令详解
查看>>
非关系型数据库(nosql)介绍
查看>>
移动端自动化测试-Windows-Android-Appium环境搭建
查看>>
Xpath使用方法
查看>>
移动端自动化测试-Mac-IOS-Appium环境搭建
查看>>
Selenium之前世今生
查看>>
Selenium-WebDriverApi接口详解
查看>>
Selenium-ActionChains Api接口详解
查看>>
Selenium-Switch与SelectApi接口详解
查看>>
Selenium-Css Selector使用方法
查看>>
Linux常用统计命令之wc
查看>>
测试必会之 Linux 三剑客之 sed
查看>>
Socket请求XML客户端程序
查看>>
Java中数字转大写货币(支持到千亿)
查看>>
Java.nio
查看>>
函数模版类模版和偏特化泛化的总结
查看>>