Анимация сортировки
Помогите, гуру JS.
Дали задание, отобразить графически процесс сортировки целых чисел, чтобы пользователь мог воочию наблюдать как сортируются данные. Сортировка - пузырьком. Ума не приложу, как анимацию сделать тут=( Прошу дать совет, направить на истинный путь=) <!DOCTYPE html> <html> <head> <title></title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <form> <div>Введите числа, которые вы хотите занести в массив, без пробелов, через запятую</div> <input type="text" id="arr" required> <input type="button" value="Вывести" id="show"> <input type="button" value="Отсортировать" id="sortButton"> </form> <div id="sort"></div> <script> function SortBubble() { var showButton=document.getElementById('show'); var sortButton=document.getElementById('sortButton'); function isNumeric(n) { //Проверка на число return !isNaN(parseFloat(n)) && isFinite(n) } function checkArr(arr) { //Проверяем, всё ли верно ввёл пользователь for(i=0; i<arr.length; i++) { number=arr[i]; if(!isNumeric(number)) { alert('Вы допустили ошибку при вводе'); return false; } } return true; } showButton.onclick=function() { //выводим таблицу var arr=document.getElementById('arr').value.split(','); if(!checkArr(arr)) return; showButton.onclick=null; var div=document.getElementById('sort'); var table="<table><tr>"; for(i=0; i<arr.length; i++) { table+='<td>'+arr[i]+'</td>'; } table+='</tr></table>' div.innerHTML+=table; } sortButton.onclick=function() { //сортируем var tds=document.getElementsByTagName('td'); var tmp=[] for (var i = tds.length - 1; i > 0; i--) { for (var j = 0; j < i; j++) { if (tds[j].innerHTML > tds[j+1].innerHTML) { tmp = tds[j].innerHTML; tds[j].innerHTML = tds[j+1].innerHTML; tds[j+1].innerHTML = tmp; } } } } } new SortBubble(); </script> </body> </html> |
Цитата:
http://javascript.ru/blog/Andrej-Par...cii-JavaScript |
похоже не правильно вопрос сформулировал(
я элементы массива помещаю в ячейки таблицы, и потом беру данные из таблицы и сортирую, но проблема то в чем, я не знаю как тормознуть цикл, чтобы сортировка шла как бы пошагово, чтобы было видно как это дело всё сортируется setTimeut/Interval тут не подходит, вот я и впал в ступор=( |
Цитата:
|
может визуально имели ввиду так?)
<!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript"> (function(){ var a = [1,4,5,6,4,9,12,8]; for(var i = 0; i < a.length; i++) { if(a[i] > a[i+1]) { var buf = a[i]; a[i] = a[i+1]; a[i+1] = buf; document.write(a + "</br>"); i = 0; } } })() </script> </head> <body> </body> </html> |
Если кому интересно, почти сделал) осталось некоторые баги поправить, почистить код и на jq переделать)
http://learn.javascript.ru/play/a8BgK |
Просто в задание указано, что надо на jq написать, а я пока с jq на вы, только на родном js'е писал.
|
Часовой пояс GMT +3, время: 16:39. |