Autor Zpráva
Jiří Ráb
Profil
Zdravím, chtěl bych se zeptat jak mám setřídit pole, které už je předem naplněné čísly bud vzestupně či sestupně za pomocí operátoru spaceship a foreach cyklu. Díky za pomoc
Keeehi
Profil
Jiří Ráb:
Otázka zní proč? Pokud je pole naplněné čísly, použij funkci sort. Nic víc nepotřebuješ.
Jiří Ráb
Profil
Vím ale bohužel to má byt bez funkce sort.
Keeehi
Profil
Takže úkol do školy? A jaký typ řazení to má být? A foreach a spaceship jsou podmínka, nebo to chceš použít, protože si myslíš, že je to tak správně?
Jiří Ráb
Profil
Ano je to úkol do školy, řadit to má umět jak vzestupně tak sestupně , spaceship a foreach jsou podmínka.
.
Keeehi
Profil
function own_sort(array $array, $ascending = true) {
    $direction = ascending === true ? 1 : -1;
    $result = [];
    
    $i = 0;
    $count = count($array);
    while ($i < $count) {
        $extreme = $ascending === true ? PHP_INT_MAX : PHP_INT_MIN;
        
        foreach ($array as $key => $value) {
            if (($value <=> $extreme) * $direction < 0) {
               $extreme = $value;
               $extremeKey = $key;
            }
        }
        
        $result[] = $extreme;
        unset($array[$extremeKey]);
        
        $i++;
    }
    
    return $result;
}

Doufej, že to nikdo nebude kontrolovat na opisování. Google má toto forum rád a indexuje ho velmi rychle. A kdyby se někdo ptal, tak jde v důsledku o implementaci insertion sortu. Jen není in-place, jak tak většinou bývá. Je to kvůli tomu, aby bylo možné použít foreach.

Jinak informatiku vám na škole učí někdo, kdo tomu moc nerozumí. Ano, cyklus je pro řazení potřeba, ale foreach se na to vůbec nehodí. Klasický for nebo while je mnohem vhodnější. A zadruhé, spaceship operátor se hodí v kombinaci s funkcí usort. Tady není vůbec potřeba.

Pro vyzkoušení foreach by byla vhodná třeba úloha na spočtení sumy pole a pro spaceship operátor řazení dvourozměrného pole (případně pole objektů) s už výše zmiňovanou funkcí usort.
Jiří Ráb
Profil
Díky moc za pomoc a za tvé rady v dobrém, jo hold náš učitel na webovky.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: