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