Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 3

Не работает сортировка

07.04.2016, 00:34. Показов 1398. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Я новичок в JS.
Мне нужно создать программу, которая выводит на экран заданное кол-во строк (элементов массивов). При этом он должен сортировать строки по уменьшению их длины. Также программа должна сравнивать первые буквы (вторые, если первые одинаковые) строк одинаковой длины и сортировать их по алфавиту.
На данный момент я сделал отдельно сортировку по длине строки и генератор строки случайной длинны и случайных символов.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<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. Также, если не трудно, помогите с сортировкой по алфавиту между строк одинаковой длины.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.04.2016, 00:34
Ответы с готовыми решениями:

Быстрая сортировка, ситуация, при которой сортировка работает не корректно
Procedure sort(m, l: Integer); Var i, j, x, w: Integer; Begin i := m; j := l; x := ar; Repeat While...

Внешняя сортировка(сортировка последовательностей)Не работает
Вот начал смотреть прямое слияние. А она не выдает желаемых результатов. Вот последовательность к примеру 10,12,9,3,11,1, если брать...

Сортировка выбором, сортировка вставкой, сортировка заменой, сортировка обменом ("пузырьковая" сортировка)
Создать класс, содержащий массив и реализующий алгоритмы сортировки и бинарного поиска в этом массиве. Класс описать с помощью...

4
Философ-разговорник
 Аватар для Padonak
1066 / 391 / 120
Регистрация: 20.02.2016
Сообщений: 884
Записей в блоге: 1
07.04.2016, 10:29
Цитата Сообщение от iadventureq Посмотреть сообщение
По отдельности эти две части работают. Проблема лишь в соединении.
Вставьте после первого цикла alert(arr.join(',\n')); и увидите, что нагенерировал ваш генератор.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
08.04.2016, 14:38
давайте уточним вашу задачу:
1. надо создать функцию, которая будет принимать один аргумент -- количество генерируемых строк n
2. генерируемая строка должна содержать случайное количество алфавитно-цифровых символов [0-9a-zA-Z], расположенных в случайном порядке
3. функция должна возвращать сгенерированные строки в виде массива, в котором строки будут отсортированы, во-первых, по их длине в порядке убывания и, во-вторых, по алфавиту (здесь порядок вы не указали)

верно я сформулировал?

для решения этой задачи необходимо знать:
а) диапазон длины строки (в виде, например, условия -- "строка должна содержать минимум 1 символ и максимум -- 45 символов")

б) порядок сортировки по алфавиту (по возрастанию: от A к Z или, наоборот, по убыванию: от Z к A?)

в) влияние регистра букв на алфавитную сортировку (например, при сортировке по возрастанию, что должно стоять выше -- дурак или Дурак?)

определитесь с этими тремя условиями -- только тогда вам можно будет помочь

----------------------------------
если предположить, что:
а) длина строки должна быть в диапазоне от 5-ти символов до 60-ти
б) при равенстве длин строк сортировать их по алфавиту надо в порядке возрастания от a до z
в) буква нижнего регистра при сортировке по возрастанию будет выше буквы верхнего регистра (как в моей версии Word'a)
то можно сделать так (используя алгоритм пузырьковой сортировки):
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
function doStrings (N)
{
var smb = '0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ';
for (var str = [], k, K, j = 0; j < N; j++)
for (str [j] = '', k = 0, K = 5 + Math.round (Math.random () * 55); k < K; k++)
str [j] += smb.charAt (Math.round (Math.random () * (smb.length - 1)));
 
do
   {
   p = 0;
   for (var j = 0; j < N - 1; j++)
   if (str [j].length < str [j + 1].length)
      {
      p = 1;
      var t = str [j];
      str [j] = str [j + 1];
      str [j + 1] = t;
      }
else if (str [j].length == str [j + 1].length)
      {
      p = 1;
      for (var k = w = 0, K = str [j].length; k < K; k++)
      if (smb.indexOf (str [j].charAt (k) > smb.indexOf (str [j + 1].charAt (k))))
         {
         w = 1;
         break;
         }
      if (w)
         {
         var t = str [j];
         str [j] = str [j + 1];
         str [j + 1] = t;
         }
      }
   }
while (p);
return str;
}
 
document.write (doStrings (10).join ('<br>'));
0
08.04.2016, 15:27

Не по теме:

kalabuni, зачем самому писать сортировку, когда есть .sort()?

0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
09.04.2016, 00:43
Цитата Сообщение от BANO Посмотреть сообщение
зачем самому писать сортировку, когда есть .sort()?
потому что задача -- учебная и пузырьковый алгоритм явно прописан в задании -- не зря же топикстартер в своём коде его использует

однако ваш вопрос оказался "в тему"
я ещё раз протестировал свой код и обнаружил, что он неработающий (зависает при наличии строк равной длины)
сейчас попробую переделать

-------------------------------------

рабочий вариант
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function doStrings (N)
{
var smb = '0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ';
for (var str = [], k, K, j = 0; j < N; j++)
for (str [j] = '', k = 0, K = 5 + Math.round (Math.random () * 55); k < K; k++)
str [j] += smb.charAt (Math.round (Math.random () * (smb.length - 1)));
 
var p; 
do
   {
   p = 0;
   for (var j = 0; j < N - 1; j++)
      {
      if (str [j].length < str [j + 1].length)
         {
         p = 1;
         var t = str [j];
         str [j] = str [j + 1];
         str [j + 1] = t;
         }
      else if (str [j].length == str [j + 1].length && str [j] > str [j + 1])
         {
         p = 1;
         var t = str [j];
         str [j] = str [j + 1];
         str [j + 1] = t;
         }
      }
   }
while (p);
 
 
return str;
}
 
document.write  ('<pre>' +doStrings (10).join ('<br>') + '</pre>');
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.04.2016, 00:43
Помогаю со студенческими работами здесь

Не работает сортировка
Здравствуйте, я взял коды из тем, где рассматривался интересующий меня вопрос https://www.cyberforum.ru/php-beginners/thread712883.html и ...

Не работает сортировка
Сортировка должна выводить список,но ничего не выводит или сортировка не работает,не могу понять #define _CRT_SECURE_NO_WARNINGS ...

Не работает сортировка
Добрый вечер! У меня проблемка с сортировкой, вместо сортировки происходит вообше не знаю что =\ Остальное все вроде правильно. ...

Не работает сортировка
День добрый. Проблема такова: 1) не правильно происходит расчёт суммы всех эл-ов до максимального числа. 2) не сортирует массив от...

не работает сортировка
после введения информации о рейсах, программа должна сортировать записи по возрастанию номера рейса. Но не сортирует #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru