- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
Latest commit
106 lines (88 loc) · 3.78 KB
/
Copy pathscript.js
File metadata and controls
106 lines (88 loc) · 3.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
$(document).ready(function(){
resetNumberForSort();
});
varrandIntArr=[];// массив для целых чисел
functionrandomInteger(min,max){
varrand=min+Math.random()*(max+1-min);
rand=Math.floor(rand);
returnrand;
}
functionisInteger(num){
return(num^0)===num;
}
functionresetNumberForSort(){
$('.number-after-sort').each(function(index,element){
$(element).css({left: 40+(index*100)});
$(element).html("-");
});
}
functiongenerateNumbers(){
varminInteger=+document.getElementById('minNumber').value;
varmaxInteger=+document.getElementById('maxNumber').value;
if(minInteger>=maxInteger||
!isInteger(minInteger)||
!isInteger(maxInteger)||
minInteger<-99||
minInteger>99||
maxInteger<-99||
maxInteger>99){
alert("Введите корректный диапазон ЦЕЛЫХ чисел [-99, 99], где \"min\" не может быть больше или равно \"max\"");
document.getElementById("sortButton").disabled=true;
return;
}
// Сброс произведенных изменений
document.getElementById("sortButton").disabled=false;
document.getElementById("sortStatusText").innerHTML="Сортировка еще не началась";
randIntArr=[];
resetNumberForSort();
// Генерация чисел и запись их в массив и в div'ы
varrand;
$('.number-before-sort').each(function(index,element){
rand=randomInteger(minInteger,maxInteger);
randIntArr.push(rand);
$(element).html(rand);
});
}
functionsortNumbers(){
document.getElementById("sortButton").disabled=true;
document.getElementById("generateButton").disabled=true;
document.getElementById("sortStatusText").innerHTML="Сортировка в процессе...";
$('.number-after-sort').each(function(index,element){
$(element).html(randIntArr[index]);
});
varlistForSort=$(".number-after-sort");
varlength=randIntArr.length;
vardelay=700;// Скорость сортировки в милисекундах
for(vari=0;i<length-1;i++){
// Анонимные self-invoked функции необходимы для корректной работы setTimeout
(function(i){
for(varj=0;j<(length-1-i);j++){
(function(j){
// setTimeout необходим из-за анимации элементов,
// необходимо ждать ее завершения перед новой итерацией цикла
setTimeout(function(){
$(listForSort[j]).css("backgroundColor","blue");
$(listForSort[j+1]).css("backgroundColor","blue");
if(randIntArr[j]>randIntArr[j+1]){
vartemp=randIntArr[j];
randIntArr[j]=randIntArr[j+1];
randIntArr[j+1]=temp;
vartempObj=listForSort[j];
[].splice.call(listForSort,j,1,listForSort[j+1]);
[].splice.call(listForSort,j+1,1,tempObj);
vartempLeft=listForSort[j].style.left;
$(listForSort[j]).animate({left: listForSort[j+1].style.left},delay);
$(listForSort[j+1]).animate({left: tempLeft},delay);
}
if(j==length-2-i)
listForSort.css("backgroundColor","red");
if(i==length-2){
document.getElementById("sortStatusText").innerHTML="Сортировка завершена!";
document.getElementById("generateButton").disabled=false;
}
},delay*j+((length-1)*i*delay));
})(j);
}
})(i);
}
}