Подскажите пожалуйста почему срабатывает только один цикл!
<script language="javascript">
var x = prompt("Введите разрядность массива"); var m=new Array(); for (i=0; i< x; ++i) {m[i]=Math.round(Math.random()*100);} for (i=0; i<x; ++i) document.write(" " + m[i]); var min = m[0]; var k = 0; var y = 0; var obmen = 0; for (j = 0; j < x; ++j){ for (i = y; i < x; ++i){ if (min > m [i]) {min = m [i]; k = i; obmen = m [y]; m[k] = obmen; m[y] = min; } } } document.write(" <br>"); document.write(min +" "+ k); document.write(" <br>"); for (i=0; i<x; ++i) document.write(" " + m[i]); </script> предполагается сортировка рандомного массива. Только начинаю сильно не ругайтесь. Не надо пожалуйста готовых решений, просто подскажите, где я не прав. Заранее спасибо! |
Если бы вы поподробней описали алгоритм вашей сортировки, а то въехать в него очень сложно. Но сразу видно кучу ненужных действий. Ну по поводу k понятно - это номер наименьшего элемента и то из неотсортированного массива. Но зачем объявлять y? Вы присваиваете ему ноль, а затем в цикле его не меняете. Затем, зачем цикл по j, если j тоже в цикле не используется?
Могу предложить алгоритм сортировки: первый цикл, скажем по j идет от первого до последнего элемента, а во втором, вложенном в него, по i сравнивает с элементами справа от него и если нужно меняет. |
Просто экспериментировал, поэтому и много мусора. За совет спасибо!
|
Часовой пояс GMT +3, время: 16:39. |