这是我参与更文挑战的第5天,活动详情查看: 更文挑战
快速排序是首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它左边,所有比它大的数都放到它右边,然后再按此方法对这两部分数据分别进行快速排序,让整个数据变成有序序列。

如图所示,现在有一个数组,我们想要让它用快速排序的方法排好序列,首先把4作为关键数据,然后有两个部分,一个是4左侧比它小的部分,一个是右侧比它大的部分。

如图所示,有两个指针,分为左指针和右指针,两个指针依次和关键数据4做比较

首先1和4比较,1比4小,那么1不用换位置,接着7和4比较,7比4大,也不用换位置

然后6和4比较,6比大,应该放到右边,然后8和4比较,8比4,不用换位置

然后2和4比较,2比4小,需要放到左边去

然后2和6互换位置,然后9和4比较,9比4大,需要换位置

然后3和4比较,3比4小,需要换位置

然后3和9互换位置,最后将关键数据放到这两部分的中间,然后再用同样的办法,将左右两部分的数据排序,这就是快速排序的大概思路
代码实现
var arr = [4,1,6,9,3,2,8,7];
function swap(arr,a,b){
    var temp = arr[a];
    arr[a] = arr[b];
    arr[b] = temp;
}
function quickSort2(arr,begin,end){
    if(begin >= end -1) return;
    var left = begin;
    var right = end;
    do{
        do left++;while(left < right && arr[left] < arr[begin]);
        do right--;while(right > left && arr[right] > arr[begin]);
        if(left < right) swap(arr,left,right)
    } while (left < right);
    var sawpPoint = left == right ? right - 1:right;
    swap(arr,begin,swapPoint);
    quickSort2(arr,begin,swapPoint);
    quickSort2(arr,swapPoint + 1,end);
    
    }
}
function quickSort(arr){
    quickSort2(arr,0,arr.lenght);
}
quickSort(arr);
conole.log(arr);
复制代码© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
    






















![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)
