Есть вот такое задание:
на странице по ссылке
http://algolist.manual.ru/sort/merge_sort.phpрасписан алгоритм сортировки слиянием
Ваше задача:
Создать Массив на 1000 элементов заполнит его случайными значениями от 1-1000
и используя описанный алгоритм отсортировать его в порядке возрастания.
Я сделал такой код:
function mergesort($array, $beg, $end) {
if (count($array) < 1) return;
else
{
$split = count($array) / 2;
$array1 = array_slice($array, $beg, $split);
$array2 = array_slice($array, $split + 1, $end);
sort($array1);
sort($array2);
}
$array = array();
$ptr1 = $ptr2 = 0;
while ($ptr1 <= count($array1) && $ptr2 <= count($array2)) {
if ($array1[$ptr1] < $array2[$ptr2]) {
$array[] = $array1[$ptr1++];
}
else {
$array[] = $array2[$ptr2++];
}
}
while ($ptr1 < count($array1)) $array[] = $array1[$ptr1++];
while ($ptr2 < count($array2)) $array[] = $array2[$ptr2++];
return $array;
}
$beg = 1;
$end = 1000;
$ar = array();
/* заполнение массива случайными числами, вариант первый: */
for($i = 1; $i <= 1000; $i++)
{
$ar[] = $i;
shuffle($ar);
}
/*вариант второй:
$ar = array();
for($i = 1; $i <= 1000; $i++)
{
$ar[$i] = rand(1, 1000);
}
*/
echo "Sorted massiv:";
echo '<br><br>';
$sorted = mergesort($ar, $beg, $end);
foreach($sorted as $val)
{
echo $val; echo '<br><br>';
}
мне пришел ответ:
Переработайте скрипт без использования стандартных функций sort, array_slice, используя созданую Вами функцию
mergesort (используя рекурсию) Обратите внимание на использование минимального количества памяти сделать замер.
Я не знаю как это сделать помогите кто чем сможет. Заранее спасибо!