代码之家  ›  专栏  ›  技术社区  ›  William Machado

JavaScript函数插入排序/函数未定义

  •  0
  • William Machado  · 技术社区  · 7 年前

    这是我的密码

    function insertionSort(arr) { 
        for(var i = 1; i < arr.length; i++) { 
            var val = arr[i]; var j; for(j = i; j > 0 && arr[j-1] > val; j--) {
                arr[j] = arr[j-1]; } arr[j] = val; }
        }
    function reverseInsertionSort(arr) { 
        for(var i = arr.length; i >1; i--) 
        { var val = arr[i]; var j;
            for(j = i; j > 0 && arr[j-1] > val; j--)
                { arr[j] = arr[j-1]; } arr[j] = val;
                } }
    var length = Math.floor(Math.random()*100)+1;
    var arr = new Array();
    for(let i = 0; i < length; i++) {
      arr.push(Math.floor(Math.random()*10000)+1);
    }
    console.log(arr);
    //function sortCheck(arr) {
    //for( var i = 0 ; i < arr.length; i++){
    //  if(arr[i]>rr[i+1]){
    //      return false
    //  }
    //}
    //return true}
    
    
    var sortedArr = insertionSort(arr);
    console.log(sortedArr);
    console.log("And with reverse \n");
    var reverseSortedArr = reverseInsertionSort(arr);
    console.log(reverseSortedArr);
    //console.log(sortCheck(sortedArr));
    

    我现在遇到的问题是,当使用console.log输出时,sortedar是未定义的,问题似乎是我的函数是“未定义”的,但是看到我上面如何定义它,我不明白这是怎么回事。

    3 回复  |  直到 7 年前
        1
  •  2
  •   Our_Benefactors Wade Anderson    7 年前

    var sortedArr = insertionSort(arr) ,打电话就行了 insertionSort(arr) 然后呢 console.log(arr) .

        2
  •  0
  •   ellipsis    7 年前

    function insertionSort(arr) { 
        for(var i = 1; i < arr.length; i++) { 
            var val = arr[i]; var j; for(j = i; j > 0 && arr[j-1] > val; j--) {
                arr[j] = arr[j-1]; } arr[j] = val; }
       return arr; }
    function reverseInsertionSort(arr) { 
        for(var i = arr.length; i >1; i--) 
        { var val = arr[i]; var j;
            for(j = i; j > 0 && arr[j-1] > val; j--)
                { arr[j] = arr[j-1]; } arr[j] = val;
                } return arr}
    var length = Math.floor(Math.random()*100)+1;
    var arr = new Array();
    for(let i = 0; i < length; i++) {
      arr.push(Math.floor(Math.random()*10000)+1);
    }
    console.log(arr);
    
    
    
    var sortedArr = insertionSort(arr);
    console.log(sortedArr);
    console.log("And with reverse \n");
    var reverseSortedArr = reverseInsertionSort(arr);
    console.log(reverseSortedArr);
    //console.log(sortCheck(sortedArr));
        3
  •  0
  •   Josh Wood    7 年前

    确保从函数返回数组。由于您当前没有,将函数分配给变量不会产生任何特定值。

    function insertionSort(arr) { 
        for(var i = 1; i < arr.length; i++) { 
            var val = arr[i]; 
            var j; 
            for(j = i; j > 0 && arr[j-1] > val; j--) {
                arr[j] = arr[j-1]; 
            } 
            arr[j] = val; 
         } 
        return arr
    }