zoukankan      html  css  js  c++  java
  • 排序之快排(JS)

    快速排序(Quicksort)是对冒泡排序的一种改进。

      它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列

           详细描述:首先在要排序的序列 a 中选取一个中轴值,而后将序列分成两个部分,其中左边的部分 b 中的元素均小于或者等于 中轴值,右边的部分 c 的元素 均大于或者等于中轴值,而后通过递归调用快速排序的过程分别对两个部分进行排序,最后将两部分产生的结果合并即可得到最后的排序序列。

    js实现

    //交换数据
    function swap(arr,i,j){
        arr[i]=arr[i]+arr[j];
        arr[j]=arr[i]-arr[j];
        arr[i]=arr[i]-arr[j];
        return arr;
    }
    
    //快排,一般index设置为0,从第一个数值开始
    function fastSort( arr, left, right, index){
        let tmp = arr[index];
            //左边和右边是否相同,不同继续寻找
        while( right!=left){
                    //从最右边找到一个比基准值小的数据,则进行交换
            while(arr[right] <= tmp ){
                right--;
                swap(arr,index,right);
                index = right;
            }
             //从最左边找到一个比基准值大的数据,则进行交换
            while(arr[left] >= tmp ){
                left++;
                swap(arr,index,left);
                index = left;
            }
        
                    //以基准值索引为界,分别对其做序列以及有序列进行继续排序
            fastSort(arr, left, index-1);
            fastSort(arr, index+1, right);
        }
        return arr;
    }  
  • 相关阅读:
    Java实现简单的图片浏览器
    ArrayList源码笔记
    JZ12 数值的整数次方算法笔记
    TCP的三次握手与四次挥手学习笔记
    Deepin安装LAMP环境
    Deepin安装Mysql(解决"没有可安装候选"问题)
    流行的Linux系统合集
    Win10超简单安装,菜鸡钊的装机经验分享
    Java入门(七)之面向对象-划重点
    Java入门(六)之常用的类
  • 原文地址:https://www.cnblogs.com/lidedong/p/9800946.html
Copyright © 2011-2022 走看看