forked from Maxlab/php-tasks-to-prepare-for-interview
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.php
86 lines (77 loc) · 2.61 KB
/
test.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
<?php
require_once('loader.php');
use Training\ITestSortInterface;
use Training\Data;
class Test implements ITestSortInterface
{
/**
* Отсортировать одномерный массив своими силами
*
* На входе array(2,5,3,5,6,7,8,9,25,24,18,26,27,28,29,30,31)
* На выходе отсортированный массив
*/
public function testSort1($array)
{
// Условие окончания рекурсии
if (!$lenght = count($array)) return $array;
// Обнуляем
$x = $y = array();
// Те, что меньше первого элемента в одну сторону, те что больше в другую.
// А что-бы цыкл не ушел в бесконечность начинаем его с $i = 1
for ($i = 1; $i < $lenght; $i++) {
if ($array[$i] > $array[0]) $x[] = $array[$i];
else $y[] = $array[$i];
}
return array_merge($this->testSort1($y), array($array[0]), $this->testSort1($x));
}
/**
* Отсортировать двумерный массив пришедший из БД
*
* На входе array(
* '1'=>array('price'=>10,'count'=>2),
* '2'=>array('price'=>5,'count'=>5),
* '3'=>array('price'=>8,'count'=>5),
* '4'=>array('price'=>12,'count'=>4),
* '5'=>array('price'=>8,'count'=>4),
* )
* На выходе отсортированный массив
* по 'price' DESC и во вторую очередь по 'count' DESC
* array(
* '2'=>array('price'=>5,'count'=>2),
* '5'=>array('price'=>8,'count'=>4),
* '3'=>array('price'=>8,'count'=>5),
* '1'=>array('price'=>10,'count'=>5),
* '4'=>array('price'=>12,'count'=>4),
* )
*
*/
public function testSort2($array)
{
// TODO: Implement testSort2() method.
}
/**
* Отсортировать числа на диагонали квадратной матрицы
* На входе квадратная матрица
* array(
* array(10,5,3,6),
* array(8,2,11,13),
* array(9,25,30,18),
* array(34,37,38,24)
* )
*
* На выходе должен быть массив
* array(
* array(2,5,3,6),
* array(8,10,11,13),
* array(9,25,24,18),
* array(34,37,38,30)
* )
*
*/
public function testSort3($array)
{
// TODO: Implement testSort3() method.
}
}
$test = new Test();
\FireDog\FB::info($test->testSort1(Data::getData(Data::ARR_SIMPL_INT)));