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