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


    var fs = require("fs");

    var writerStream = fs.createWriteStream('output.txt');


    for(var length=1;length<=50;length++){

    var arr = fillIntArr(length,100);

    writerStream.write( '['+ arr.toString() + ']','UTF8');

    mergeSort(arr);
    writerStream.write(' ','UTF8');
    writerStream.write('['+ arr.toString() + ']','UTF8');

    writerStream.write(' ','UTF8');
    }

    console.log("排序完成!");

    writerStream.end();

    writerStream.on('error', function(err){
    console.log(err.stack);
    });

    function mergeSort(arr){

    for(var seed=1;seed<arr.length;seed*=2){
    //console.log("seed:",seed);
    for(var key=0;key<arr.length;key+=2*seed){
    /*
    数组 arr 被分割成 数组长度为seed 的子数组集合;
    */

    var arrA=arr.slice(key,key+seed),
    arrB=arr.slice(key+seed,key+2*seed);

    var arrC=[],cI=0;

    arrC = merge(arrA,arrB);

    while(cI<arrC.length){
    arr[key+cI] = arrC[cI++];
    }

    /*
    console.log("arrA:",arrA);
    console.log("arrB:",arrB);
    */
    }
    }

    }


    function merge(arrA,arrB){

    var aI=0,bI=0,arrC=[];

    while(aI<arrA.length && bI < arrB.length){
    if(arrA[aI]<arrB[bI]){
    arrC.push(arrA[aI++]);
    }else{
    arrC.push(arrB[bI++]);
    }
    }
    while(aI<arrA.length){
    arrC.push(arrA[aI++]);
    }
    while(bI<arrB.length){
    arrC.push(arrB[bI++]);
    }
    return arrC;
    }


    function fillIntArr(length,max){

    var nums = [];

    while(length){
    nums.push(~~(Math.random() * max));
    length --;
    }

    return nums;
    }

  • 相关阅读:
    makefile基本操作
    Visual Studio Code 的 launch.json 解析
    Manjaro 安装与配置
    Manjaro 系统添加国内源和安装搜狗输入法
    ununtu 18.04 163 mirror
    How to Use GNOME Shell Extensions
    Ubuntu: repository/PPA 源
    什么是线程阻塞?为什么会出现线程阻塞?
    Java锁的种类
    java8流式编程(一)
  • 原文地址:https://www.cnblogs.com/rosesBlogs/p/5655550.html
Copyright © 2011-2022 走看看