wookieb -> gdzie Ty u siebie sortowanie widzisz?

Podany przez Ciebie kod bierze literę z pierwszego słowa, a później skanuje w najgorszym przypadku całe drugie słowo, by sprawdzić czy ona tam jest. To nie ma nic wspólnego z sortowaniem. Zapis w pseudokodzie:
Kod
n = długość(s1); // zakładamy, że s1 i s2 są równej długości
for(i = 0; i < n; i++)
{
znalazlem = false;
for(j = 0; j < n; j++)
{
if(s1[i] == s2[j])
{
znalazlem = true;
break;
}
}
if(!znalazlem)
{
błąd();
}
}
ok();
W najgorszym przypadku dla słów długości n algorytm wykona n^2 iteracji.
Teraz sposób przez zliczanie:
Kod
slownik1 = inicjuj('a' do 'z' na 0);
slownik2 = inicjuj('a' do 'z' na 0);
n = długość(s1);
for(i = 0; i < n; i++)
{
slownik1[s1[i]]++;
slownik2[s2[i]]++;
}
for(i = 'a'; i < 'z'; i++)
{
if(slownik1[i] != slownik2[i])
{
błąd();
}
}
ok();
Ilość iteracji: n + stały czas na zainicjowanie i sprawdzenie słownika, jeśli znamy jego rozmiary. Ewentualnie można nawet z jednym słownikiem - pierwsze słowo dodaje, drugie odejmuje ilość wystąpień. Jeśli litery w słowach są identyczne, na końcu ilości wystąpień każdej litery będą równe 0.
Ad. 2 -> wiem, że nie problem napisać, ale w PHP to się trochę mija z celem właśnie z powodu, który w cytacie pominąłeś, czyli kosztowność tych operacji.