ivan453
Новичок
Здравствуйте.
Есть например массив
или такой
размер произвольный, значение ключей от 1 до 5. ( повторение или не повторение чисел также произвольное - то есть любые от 1 до 5)
Его нужно переписать так что бы значение ключа с наибольшим значением стал равным численно размеру массива(если их несколько то все = размеру массива), а остальные значение ключей стали меньше на единицу( опять если одинаковые значения то и одинаковые у всей группы новое (одно) значение) и так далее все изменились.
На пример массив
Станет таким
После сортировки( для понимания сути вопроса)
Или
Станет таким
После сортировки
Вроде бы простым кажется вопрос но ....
Какой алгоритм что похожее на сортировку ?
Толкового что то в голову не фига приходит.
Пока вот так, но так не работает если массив например (1, 2,2,2 ,5)
Есть например массив
PHP:
Array ( [0] => 4 [1] => 5 [2] => 3 [3] => 1 [4] => 2 [5] => 5 )
PHP:
Array ( [0] => 3 [1] => 5 [2] => 2 [3] => 4 [4] => 2 [5] => 1 [6] => 4 )
Его нужно переписать так что бы значение ключа с наибольшим значением стал равным численно размеру массива(если их несколько то все = размеру массива), а остальные значение ключей стали меньше на единицу( опять если одинаковые значения то и одинаковые у всей группы новое (одно) значение) и так далее все изменились.
На пример массив
PHP:
Array ( [0] => 4 [1] => 5 [2] => 3 [3] => 1 [4] => 2 [5] => 5 )
PHP:
Array ( [0] => 5 [2] => 4 [3] => 2 [4] => 3 [1] => 6 [5] => 6 )
PHP:
Array ( [3] => 2 [4] => 3 [2] => 4[0] => 5 [1] => 6 [5] => 6 )
PHP:
Array ( [0] => 3 [1] => 5 [2] => 2 [3] => 4 [4] => 2 [5] => 1 [6] => 4 )
PHP:
Array ( [0] => 5 [1] => 7 [2] => 4 [3] => 6 [4] => 4 [5] => 3 [6] => 6 )
PHP:
Array ( [5] => 3 [2] => 4 [4] => 4 [0] => 5 [3] => 6 [6] => 6 [1] => 7 )
Какой алгоритм что похожее на сортировку ?
Толкового что то в голову не фига приходит.

Пока вот так, но так не работает если массив например (1, 2,2,2 ,5)
PHP:
$myArr; // искомый массив
$temp_myArr// = $myArr; // копия
$count_myArr = count($myArr);
$max = max($myArr);
for($i=0; $i<count_myArr;$i++)
{
if($myArr[$i]==$max)
{
$temp_myArr[$i]=$count_myArr; // наибольшему(или наибольшим) поменяли значение
}
else
{
for($j=0;$j<$max;$j++)
{
if($max-$myArr[$j]==$j)
{
$temp_myArr[$i]=$j;
}
}
}
}