Zu Sortierverfahren allgemein und weiterführende Links:
http://de.wikipedia.org/wiki/Sortierverfahren
Bei grösseren Arrays empfehle ich im allgemeinen Mergesort. Mergesort ist zudem ein stabiler Sortieralgo, wodurch bei erneutem sortieren, die alte Sortierung "erhalten" bleibt.
Wenn du aber von Anfang an, die Sache in einem Schritt sortieren willst, dass nach zwei Kriterien oder mehr sortiert wird, dann ist das doch auch kein Problem. Ich zeige mal den Lösungsansatz anhand von einem Array von Structs.
struct SSort
{
int x;
int y;
};
void DieSortierfunktion(SSort* pArray, int nCount)
{
// ...
// Irgendwo in deiner Sortierfunktion wirst du dann die Werte vergleichen.
if(pArray[i].x > pArray[i+1].x)
{
if(pArray[i].y > pArray[i+1].y)
{
// entsprechend einordnen.
}
}
// ...
}
Mit der ersten Anweisung stellst du fest, ob das erste Kriterium erfüllt ist und sobald das der Fall ist, überprüfst du noch das zweite Kriterium. Das kann natürlich noch beliebig erweitert, verbessert und verändert werden. Aber das Prinzip hast du hoffentlich verstanden?
Grüssli