Алгоритм сортировки останавливается, когда он находит правильное условие - PullRequest
1 голос
/ 09 января 2020

Я пишу код javascript, который будет сортировать массивы в порядке возрастания. Но всякий раз, когда мой код соответствует правильному условию arr[1] < arr[2], он останавливает l oop и выдает сообщение Congratulations!! This Group is Sorted. Кстати, я использую jquery также потому, что я сделал небольшую игру, в которой вы можете отсортировать все числа в порядке возрастания и проверьте, отсортирован он или нет.

Я не уверен, что событие click ответственно за остановку l oop. Я действительно смущен этим. Кто-нибудь может мне помочь?

Вот фрагмент кода из моего проекта:

HTML

<ul id="sort">
   <!--Generated Numbers using javascript-->
</ul>

JAVASCRIPT

$(document).ready(function(){
    $("#sort").sortable();
    $("#sort").disableSelection();

        // var elemArr = document.getElementsByClassName("sort-ui");
        // var arr = jQuery.makeArray(elemArr);
        // arr = arr.map(data => data.innerHTML);
        var arr = [];

    function generateNum(){
        var min=1;
        var max=12;
        return Math.floor(Math.random() * (+max - +min)) + +min;
        // document.write("Random Number Generated : " + random );
    }

    function storeToArray() {
        var i = 0;
        var ul = document.getElementById("sort");
        var li;
        while(i < 12) {
            var rec = generateNum();

            arr[i] = rec;
            li = document.createElement("li");
            li.appendChild(document.createTextNode(arr[i]));
            ul.appendChild(li);
            ++i;
        }
    }

    storeToArray();

    $(".btn-check").on("click", function(){
        var elemArr = document.getElementsByTagName("li");
        var arrCheck = jQuery.makeArray(elemArr);
        arrCheck = arrCheck.map(data => data.innerHTML);
        var int;
        var len = arrCheck.length;
        console.log(arrCheck);
        for(int = 0; int < len-1; i++) {
            if(arrCheck[int] > arrCheck[int+1]){
                alert("This Group is Not Sorted");
            } else {
                alert("Congratulations!! This Group is Sorted");
            }
        }
    });
});

CSS (для визуализации)

#sort {
    list-style: none;
    width: 430px;
    border: 1px solid;
    padding: 20px;
    margin: 0 auto;
    height: 315px;
}

#sort li {
    display: inline-block;
    float: left;
    width: 100px;
    height: 100px;
    background: yellow;
    font: 600 16px/100px "Arial";
    text-align: center;
    margin: 0;
    border: 3px solid white;
}

.button-c {
    width: 200px;
    margin: 0 auto;
}

Ответы [ 2 ]

1 голос
/ 09 января 2020

Ошибка для l oop i ++ для (int = 0; int , должно быть int ++

let arrCheck = [1, 3 , 3, 4]
let len = arrCheck.length
for(let int = 0; int < len-1; int++) {
  if(arrCheck[int] > arrCheck[int+1]){
      alert("This Group is Not Sorted");
  } else {
      alert("Congratulations!! This Group is Sorted");
  }
}
0 голосов
/ 09 января 2020

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

function isSorted(arrCheck) {
    var sortVal = true;
    var len = arrCheck.length;
    console.log(arrCheck);
    for(int = 0; int < len-1; int++) {
        if(parseInt(arrCheck[int]) > parseInt(arrCheck[int+1])) {
            sortVal = false;
            break;
        }
    }

    return sortVal;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...