Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Не работает сортировка.


Автор: iadventureq 7.4.2016, 00:39
Здравствуйте. Я новичок.
Мне нужно создать программу, которая выводит на экран заданное кол-во строк (элементов массивов). При этом он должен сортировать строки по уменьшению их длины. Также программа должна сравнивать первые буквы (вторые, если первые одинаковые) строк одинаковой длины и сортировать их по алфавиту.
На данный момент я сделал отдельно сортировку по длине строки и генератор строки случайной длинны и случайных символов.
Код

<html><body><script>

    for (pp = 1; pp <= 20; pp++) // генератор случайной строки
    {

    rand = Math.round(Math.random()*80);
    var result       = '';
    var arr = new Array;
    var words        = '0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBN';
    var max_position = words.length - 1;

        for( num = 1; num <= rand; num=num+1)
        {
        position = Math.floor ( Math.random() * max_position );
        result = result + words.substring(position, position + 1);
        
        }
    arr[pp] = result;
    }


    var buffer = "";

    for(num2 = 0; num2 < arr.length - 1; num2++) // сортировка по длине
    {

        for(j = 0; j < arr.length - 1; j++)
        {
            if (arr[j].length < arr[j + 1].length)
            {
                buffer = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = buffer;
            }
        }

    }
        

    for (num3 = 0; num3 < arr.length; num3++) {
        document.write(arr[num3] + "<br/>");
    }


</script></body></html>

По отдельности эти две части работают. Проблема лишь в соединении.
P.S. Также, если не трудно, помогите с сортировкой по алфавиту между строк одинаковой длины.

Автор: igorold 7.4.2016, 07:23
Непонятно, что хочешь соединить.
Массив формируешь, по длине строки сортируешь. Правда я бы не стал во втором цикле каждый раз перебирать весь массив.
По поводу сортировки по алфавиту - что не получается? или в гугле забанили?

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Ne-rabotayet-sortirovka-id570582acae2015b0478b4567#findElement_E7045_5705e0c3ae20159c2978bb39_0

Автор: lite_switch 8.4.2016, 21:40
http://stroymnogo.com/ Журнал выходит 1 раз в квартал.
Электронный научный журнал «СтройМного» включен в eLibrary.
В настоящее время идет формирование №1 (2), 2016.
Ежемесячная аудитория: более 10 000 уникальных пользователей.
Приглашаем авторов к публикации материалов. Возможны срочные публикации!

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Ne-rabotayet-sortirovka-id570582acae2015b0478b4567#findElement_E7045_5707fb0eae2015c75978bc54_0

Автор: sQu1rr 9.4.2016, 07:02
задача решаетс извините в одну строку (с сортировкой всмысле). а заполнить массив - ну уж не смешите  smile 
Код

strings.sort(function (a, b) {
    return a.length == b.length ? a > b : b.length - a.length;
})


https://jsfiddle.net/sQu1rr/tk48xj4c/

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)