Тема: javascript: Сортировка массива с отображением процесса
Бывало я раньше вечерами от скуки решал "решебник" для поступающих в вузы со всякими там уравнениями.
Когда попадаются в интернете интересные и посильные мне задачки я всегда их решаю, что бы черепушка работала. 8)
Прочитал интересную статью об оптимизации javascript-вычислений. В статье рассматривается лишь один пример. Сначала хотел сразу выложить ссылку на статью и узнать ваше мнение. Но, писать код с нуля, не опираясь на чужие мысли, всегда интереснее, не правда ли? Для начала попрошу местных гуру javascript-инга написать функцию-сортировку массива. Вот "рыба":
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Running long JavaScript processes in a web browser</title>
<style>
body {
padding:0;
margin:1em;
}
#progressbar {
position:relative;
width:300px; height:20px;
border:1px solid black;
overflow:hidden;
}
#progressbar div {
background:#316AC5;
width:0; height:100%;
}
</style>
</head>
<body>
<p>Sorting, please wait...</p>
<div id="progressbar"><div></div></div>
<script>
(function () {
var i, length, data, el, start;
// Initialize a few things...
length = 5000;
data = [];
el = document.getElementById("progressbar").firstChild;
// Setup an array of random integers...
for (i = 0; i < length; i++) {
data[i] = Math.floor(Math.random() * length);
}
Begin =======================
FUNCTION {el.style.width = (100 * value / total) + "%";}
End ========================
alert("Total duration: " + ((new Date().getTime() - start) / 1000) + " seconds");
})();
</script>
</body>
</html>
Прошу многоуважаемых написать между begin/end функцию сортировку массива, при обязательном условии: Что бы работал индикатор прогресса. В дальнейшем, если будет > 1 примера кода, будем сравнивать скорость выполнения выших скриптов, со скриптами из статьи. Посмотри, где она оптимизация.
В FUNCTION {el.style.width = (100 * value / total) + "%";} как видите, уже стоит строка для изменения индикатора.
где total, value - общее, текущее соответственно количество/значение элементов/циклов/проходов и пр.
На данный момент у меня вообще не получается сделать сортировку при работающем прогресс баре. Ищу свои ошибки.
Я думаю, что ту статью читал не я один, поэтому прошу тех, кто в теме не копипастить, а попробовать абстрагироваться и написать свой собственный код.
Чуть позже я конечно же дам ссылочку.
PS если у кого-нибудь очень мощный комп, выставьте количество элементов больше (сейчас там стоит 5000), что бы было видно, что индикатор пашет.