-
Notifications
You must be signed in to change notification settings - Fork 0
/
sortowanie.php
94 lines (79 loc) · 1.83 KB
/
sortowanie.php
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
<?php
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
function bubbleSort(array $dane)
{
$posortowaneDane = [];
for ($w = 0; $w <= count($dane) - 2; $w++) {
for ($i = 0; $i <= count($dane) - 2; $i++) {
$x = $dane[$i];
$y = $dane[$i + 1];
if ($x > $y) {
$dane[$i] = $y;
$dane[$i + 1] = $x;
}
}
}
foreach ($dane as $item) {
$posortowaneDane[] = $item;
}
return $posortowaneDane;
}
function quicksort(array $dane)
{
$posrtowaneDane = [];
$ileElementow = count($dane);
$poczatek = 0;
$podzialka = -1;
$y = 1;
if($ileElementow <= 2) {
return $dane;
}
for($i = 0; $i<=$ileElementow-1; $i++) {
$j = $ileElementow - $y;
$k = 0;
if($dane[$k] > $dane[$j]) {
$x = $dane[$k];
$dane[$k] = $dane[$j];
$dane[$j] = $x;
$podzialka = $dane[$j];
$y++;
}
else{
$j--;
}
}
$nowaTablica = array_slice($dane, 0, $j);
$posrtowaneDane += quicksort($nowaTablica);
foreach ($dane as $item) {
$posortowaneDane[] = $item;
}
return $posrtowaneDane;
}
$in = range(2500, 1);
$start = microtime_float();
$res = bubbleSort($in);
echo microtime_float() - $start . PHP_EOL;
echo sort($in) == $res
? "dobrze"
: "źle";
echo PHP_EOL;
$in = range(2500, 1);
$start = microtime_float();
$res = sort($in);
echo microtime_float() - $start . PHP_EOL;
echo sort($in) == $res
? "dobrze"
: "źle";
echo PHP_EOL;
$in = range(2500, 1);
$start = microtime_float();
$res = quicksort($in);
echo microtime_float() - $start . PHP_EOL;
echo sort($in) == $res
? "dobrze"
: "źle";
echo PHP_EOL;