Ошибка зацикливания с помощью алгоритма NaiveSort JavaScript - PullRequest
0 голосов
/ 31 марта 2020

Я пишу javascript код, чтобы выполнить наивную сортировку для массива значений, однако у меня возникает проблема, когда l oop, где он вылетает. Это происходит в

while(!sorted(dataStructure)){
naiveSort(dataStructure);
}

Я хочу, чтобы, если каждый элемент от i до конца был меньше, чем следующий, отсортированный возвращает true, поэтому алгоритм наивной сортировки заканчивается. Может быть одна или две вещи, такие как createCanvas (800, 800); Это просто методы из библиотеки p5 js, но ни один из них не используется в алгоритме.

naiveSort. js


function setup(){
    createCanvas(800, 800);
    for( var i = 0; i < dataStructure.length; i ++){
        dataStructure[i] = random(800);
        colorCode[i] = "blank";
    }

    while(!sorted(dataStructure)){
        naiveSort(dataStructure);
    }
}


function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
  }

async function swap(arr, a, b){
    var temp = arr[a];
        arr[a] = arr[b];
        arr[b] = temp;
}

async function naiveSort(arr){
    for(var i = 0; i < arr.length; i ++){
        temp = Math.random() * ((arr.length - 1) - 0) + 0;
        swap(arr, i, temp);
        await sleep(10);
    }
}

function sorted(arr){
    for(var i = 1; i < arr.length-1; i ++){
        if(arr[i] > arr[i+1]){
            return false;
        }
    }
    return true;
}


function paint(col, rgb){
    for(var i = 0; i < dataStructure.length; i ++){
        if(colorCode[i] == col){
            stroke(0);
            fill(rgb);
            rect(i * dataWidth, 800 - dataStructure[i], dataWidth, dataStructure[i]);
        } 
    }
}


function draw(){

    background(51);
    paint("red", color(255, 0, 0));
    paint("green", color(0, 255, 0));
    paint("blank", color(255));
}

индекс. html


<!DOCTYPE html>
<html lang="">

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>p5.js example</title>
  <style>
    body {
      padding: 0;
      margin: 0;
    }
  </style>
  <script src="../p5.js"></script>
  <script src="naiveSort.js"></script>
</head>

<body>
</body>

</html>

1 Ответ

2 голосов
/ 31 марта 2020

Что такое ошибка вывода?

Глядя на отсортированную функцию, вы не проверяете, что элемент с индексом 1 действительно больше, чем элемент с индексом 0. Вы также никогда не ожидаете асинхронного возврата.

...