Javascript 如何分析包含由外部函数或方法生成的隐藏循环的算法的复杂性?

Javascript 如何分析包含由外部函数或方法生成的隐藏循环的算法的复杂性?,javascript,algorithm,performance,data-structures,Javascript,Algorithm,Performance,Data Structures,首先,如果我的标题不够简洁,我想表示歉意,但我的观点是,如果你看一下下面的代码,这是选择排序算法,显然有人会分析它的复杂性 module.exports = function (arr) { var temp; for (var i = 0; i < arr.length; i++) { var iTh = i; for (var j = i+1; j < arr.length; j++) { if (arr[j] < arr

首先,如果我的标题不够简洁,我想表示歉意,但我的观点是,如果你看一下下面的代码,这是选择排序算法,显然有人会分析它的复杂性

module.exports = function (arr) {
 var temp;
 for (var i = 0; i < arr.length; i++) {
    var iTh = i;        
    for (var j = i+1; j < arr.length; j++) {
        if (arr[j] < arr[iTh]) {                
            iTh = j;                
        }
    }
    temp = arr[i];
    arr[i] = arr[iTh];
    arr[iTh] = temp;
 }
 return arr;
}
第二次倒车

exports.reverse1 = function (str) {
 if (str == undefined || str.length) {
    return 0;
 }
 let collector = [];
 for (var i = str.length; i >= 0; i--) {        
    collector.push(str.charAt(i));
 }
 return collector.join("");
}
exports.reverse2 = function (str) {
 if (str == undefined || str === "") {
    return 0;
 }
 return str.split("").reverse().join("");
}

如果你真的喜欢,可以使用:使用不同长度的字符串对每个方法进行基准测试,然后绘制运行时与长度的关系图,并查看整体形状以估计复杂性。你可能对函数的功能感兴趣感谢@gyre提供新信息,除了ChromeDevTools或一般的浏览器之外,还有什么工具可以推荐用于收集运行时?试试看。非常高质量的性能度量库。