Il y a plusieurs problèmes dans le code.
Tu dis vouloir trier par ordre alphabétique, mais il y a un souci, tu ne trie pas par ordre alphabétique, mais par ordre des valeurs de tes char, donc dans l'ordre de la table ASCII, tu auras donc le "z" majuscule, avant le "a" minuscule. Et ça, c'est pas bon.
Ensuite, ton algo en lui-même a plusieurs problèmes.
Premièrement, tu as des soucis entre emplacement dans un tableau (tab[index]) et tableau (tab). Tu donnes assignes un char* à un char, je suis déjà étonné que ton compilo passe ça sans broncher.
Ensuite ton algo de tri pourrait être plus performant (tu fais un tri par sélection visiblement, alors qu'il ne couterait pas grand chose de faire un tri fusion). Mais ça, c'est pas grave.
Donc pour reprendre, il faut que tu fasses plusieurs choses. Premièrement, il faut que tu te prépare une "hashmap" ou simplement une "map", qui fait correspondre à un caractère, un ordre alphabétique. Par exemple une std::map<char letter, int placeDansAlphabet> (ou map<string,ordre>). Ainsi, tes caractères seront des clefs de ta map, et pour obtenir l'ordre de ta lettre, tu n'as qu'à faire map[lettre].
Une fois ça fait, tu peux faire ton tri.