zoukankan      html  css  js  c++  java
  • 归并排序

    基本过程

    1.将数组递归分解为有序数组(当分解到数组元素个数为1时候,数组自然有序)

    2.将两个有序数组合并为一个大的有序数组

    3.递归合并完成,即排序完成

    javascript实现

    function fMergeSort(arr,first,last,aTemp){
        if(first > last){
            throw new Error('first should less than last');
        }
        //取中对数组进行二分
        var mid = (first + last)/2;
        fMergeSort(arr,first,mid,aTemp);
        fMergeSort(arr,mid+1,last,aTemp);
        fMergeArray(arr,first,mid,last,aTemp);
    }
    
    function fMergeArray(arr,first,mid,last,aTemp){
        var k = 0,
            left = first,leftEnd = mid,
            right = mid+1,rightEnd = last;
        //将左右数组中较小者优先复制到临时数组
        while(left <= leftEnd && right <= rightEnd){
            if(arr[left] <= a[right]){
                aTemp[k++] = arr[left++];
            } 
            else{
                aTemp[k++] = arr[right++];
            }
        }
        //将left或right剩余元素复制到临时数组,left或right只会有一个剩余
        while(left <= leftEnd){
            aTemp[k++] = arr[left++];
        }
        while(right <= rightEnd){
            aTemp[k++] = arr[right++];
        }
        //将临时数组元素复制到元素数组中
        for(var i=0;i<k;i++){
            arr[first+i] = aTemp[i];
        }
    }
  • 相关阅读:
    python笔记目录
    Django 的View(视图)系统
    051_Bootstrap 框架
    050_jQuery 事件
    049_jQuery 操作标签
    048_jQuery
    016-递归函数
    047_BOM_DOM
    046_JS
    045_CSS
  • 原文地址:https://www.cnblogs.com/mengff/p/6158470.html
Copyright © 2011-2022 走看看