猿问

如何判断暴力排序算法何时排序

我正在编写一个简单的搜索/蛮力排序算法,但我不确定如何在它排序后停止它。我知道算法是如何工作的,并且我已经为它编写了代码,我已经实现了一个 while(!sorted) 循环,但这似乎并没有奏效。我怎么知道何时停止调用算法本身,即何时排序。我知道对于冒泡排序之类的东西,它是大 O 表示法,所以你循环 n 平方次,但是这个排序算法呢?这是我失败的尝试,我得到的错误是网页本身崩溃,console.logs 没有打印出任何负载,控制台中没有任何内容。


var 

cols         = 100;

windowWidth  = 800, windowHeight = 800,

dataWidth     = windowWidth/cols,

dataStructure = new Array(cols),

colorCode    = [],

sortedd = new Boolean;


//function discovered on https://stackoverflow.com/questions/951021/what-is-the-javascript-version-of-sleep

function sleep(ms) {

   return new Promise(resolve => setTimeout(resolve, ms));

}


function setup(){


   createCanvas(windowWidth, windowHeight);

   for(var i = 0; i < dataStructure.length; i ++){

       dataStructure[i] = random(800);

       colorCode[i] = "blank";

   }

   while(!sorted(dataStructure)){

    sorted(dataStructure);

   }

}


function naiveSort(arr){


    for(var i = 0; i < arr.length - 1; i ++){

        colorCode[i] = "red";

        var temp = Math.random() * (dataStructure.length);

            swap(arr, i, temp);

            colorCode[i] = "red";

    }

}


function sorted(arr){

    for(var i = 0; i < arr.length - 1; i ++){

        if(arr[i] > arr[i + 1]){

            return false;

        }

    }

    return true;

}


 function swap(arr, a, b){

       var temp = arr[a];

           arr[a] = arr[b];

           arr[b] = temp;

}



忽略createCanvas,p5js库函数,不影响问题


慕娘9325324
浏览 188回答 1
1回答

萧十郎

你的代码是while(!sorted(dataStructure)){&nbsp; &nbsp; sorted(dataStructure);&nbsp; &nbsp;}什么时候应该while(!sorted(dataStructure)){&nbsp; &nbsp; naiveSort(dataStructure);&nbsp; &nbsp;}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答