Sortieralgorithmen werden in der Programmierung häufig benötigt, von daher kann ein wenig Kentniss über die gängisten Sortieralgorithmen nicht schaden. Man benötigt zwar häufig gar keine Sortieralgorithmen selber programmieren, weil die verwendete Programmiersprache oder Datenbank einem die Arbeit abnimmt, kann sie aber hin und wieder doch benötigen.
PHP und MySQL verwenden von Haus aus den Quick-Sort Algorithmus, da er eine sehr kurze Laufzeit hat und auch einer der effektivsten Algorithmen ist.
In PHP kann man z.B. durch ein einfaches sort($array) seinen Array sortieren lassen. PHP übernimmt dann im Hintergrund die Sortierarbeit mit dem Quick-Sort-Algorithmus. In MySQL kann man seine Daten über ORDER BY sortieren lassen, die dann ebenfalls automatisch von MySQL sortiert werden.
Wenn man aber nun selber komplexere Dinge sortieren möchte, z.B. Objekte nach bestimmten Kriterien, muss man selber einen Sortier-Algorithmus entwickeln, der die Arbeit übernimmt.
Um einen Überblick über die gängigsten Sortieralgorithmen zu erhalten, habe ich diese vier Algorithmen einmal in PHP übersetzt: Selection Sort, Insert Sort, Bubble Sort, Quick Sort
Über die Laufzeit und alles weitere kann man sich dann bei Wikipedia informieren, das möchte ich gerade nicht zusammenfassen 
Ich möchte nur kurz sagen, dass Selection, Insert und Bubble Sort bei einer größeren Anzahl Elemente schnell eine lange Rechenzeit benötigen und man daher überlegen sollte, ob der Quick Sort nicht sinnvoller ist.
<?php
function selectionSort(array $zahlen)
{
for($i = 0; $i < count($zahlen); $i++)
{
$min = $i;
for($j = $i; $j < count($zahlen); $j++)
{
if($zahlen[$j] < $zahlen[$min])
{
$min = $j;
}
}
$tmp = $zahlen[$min];
$zahlen[$min] = $zahlen[$i];
$zahlen[$i] = $tmp;
}
return $zahlen;
}
function insertSort(array $zahlen)
{
for($i = 1; $i < count($zahlen); $i++)
{
$tmp = $zahlen[$i];
$j = $i;
while($j > 0 AND $zahlen[$j-1] > $tmp)
{
$zahlen[$j] = $zahlen[$j - 1];
$j--;
}
$zahlen[$j] = $tmp;
}
return $zahlen;
}
function bubbleSort(array $zahlen)
{
for($i = 0; $i < count($zahlen); $i++)
{
for($j = 1; $j < count($zahlen) - $i; $j++)
{
if($zahlen[$j] < $zahlen[$j-1])
{
$tmp = $zahlen[$j-1];
$zahlen[$j-1] = $zahlen[$j];
$zahlen[$j] = $tmp;
}
}
}
return $zahlen;
}
function quickSort(array $zahlen, $l = null, $r = null)
{
if(is_null($l) AND is_null($r))
{
return quickSort($zahlen, 0, count($zahlen) - 1);
}
$mitte = $zahlen[(int) (($l + $r) / 2)];
$i = $l;
$j = $r;
while($i <= $j)
{
while($zahlen[$i] < $mitte) $i++;
while($zahlen[$j] > $mitte) $j--;
if($i <= $j)
{
$tmp = $zahlen[$i];
$zahlen[$i] = $zahlen[$j];
$zahlen[$j] = $tmp;
$i++;
$j--;
}
}
if($l < $j)
$zahlen = quickSort($zahlen, $l, $j);
if($i < $r)
$zahlen = quickSort($zahlen, $i, $r);
return $zahlen;
}
$unsortierteZahlen = range(0, 10);
shuffle($unsortierteZahlen);
var_dump(implode(', ', $unsortierteZahlen));
var_dump(implode(', ', selectionSort($unsortierteZahlen)));
var_dump(implode(', ', insertSort($unsortierteZahlen)));
var_dump(implode(', ', bubbleSort($unsortierteZahlen)));
var_dump(implode(', ', quickSort($unsortierteZahlen)));
?>