Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не работает сортировка. (https://javascript.ru/forum/misc/62364-ne-rabotaet-sortirovka.html)

NewbieJS11 06.04.2016 23:54

Не работает сортировка.
 
Здравствуйте. Я новичок.
Мне нужно создать программу, которая выводит на экран заданное кол-во строк (элементов массивов). При этом он должен сортировать строки по уменьшению их длины. Также программа должна сравнивать первые буквы (вторые, если первые одинаковые) строк одинаковой длины и сортировать их по алфавиту.
На данный момент я сделал отдельно сортировку по длине строки и генератор строки случайной длинны и случайных символов.
<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. Также, если не трудно, помогите с сортировкой по алфавиту между строк одинаковой длины.

рони 07.04.2016 08:42

NewbieJS11,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>
<body>
<script>
var arr = new Array;
var words = "0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBN";
for (var pp = 0; pp < 20; pp++) {
    var rand = Math.round(Math.random() * 80);
    var result = "";
    for (var num = 0; num < rand; num++) {
        var position = Math.floor(Math.random() * words.length);
        result += words.substring(position, position + 1)
    }
    arr[pp] = result
}
var buffer = "";
for (var num2 = 0; num2 < arr.length - 1; num2++)
    for (var j = 0; j < arr.length - 1; j++)
        if (arr[j].length < arr[j + 1].length || arr[j].length == arr[j + 1].length && arr[j] > arr[j + 1]) {
            buffer = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = buffer
        }
for (var num3 = 0; num3 < arr.length; num3++) document.write(arr[num3] + "====" + arr[num3].length + "<br/>");
  </script>
</body>
</html>

NewbieJS11 07.04.2016 10:06

Цитата:

Сообщение от рони (Сообщение 413407)
NewbieJS11,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>
<body>
<script>
var arr = new Array;
var words = "0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBN";
for (var pp = 0; pp < 20; pp++) {
    var rand = Math.round(Math.random() * 80);
    var result = "";
    for (var num = 0; num < rand; num++) {
        var position = Math.floor(Math.random() * words.length);
        result += words.substring(position, position + 1)
    }
    arr[pp] = result
}
var buffer = "";
for (var num2 = 0; num2 < arr.length - 1; num2++)
    for (var j = 0; j < arr.length - 1; j++)
        if (arr[j].length < arr[j + 1].length || arr[j].length == arr[j + 1].length && arr[j] > arr[j + 1]) {
            buffer = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = buffer
        }
for (var num3 = 0; num3 < arr.length; num3++) document.write(arr[num3] + "====" + arr[num3].length + "<br/>");
  </script>
</body>
</html>

Большое спасибо!!!


Часовой пояс GMT +3, время: 08:46.