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;
    }

  • 相关阅读:
    变量与基本数据类型的练习
    04-各数据类型的常用操作
    常用函数
    03-python流程控制
    02-Python输入输出及运算符
    02-补充:逻辑运算符
    线程
    tcp实现并发效果
    生产消费者作业
    作业4.22
  • 原文地址:https://www.cnblogs.com/rosesBlogs/p/5655550.html
Copyright © 2011-2022 走看看