Vi chiedo timidamente se esistono metodi migliori per ordinare una lista di stringhe senza utilizzare il metodo Sort (troppo facile eh?)

E' uno di quegli esercizi da "compito in classe", lo so, ma nonostante ci abbia pensato un pò non sono riuscito a pensare a niente di diverso da una ricorsiva di questo tipo (Console Application)
codice:
using System;
using System.Collections.Generic;

namespace ManualSorting
{

	class StringList : List<string>
	{
		public void SortOrder()
		{
			this.SortOrder("asc");
		}
		public void SortOrder(string way)
		{
			bool modified = false;
			string item = "";
			way = way.ToLower();
			for (int index = 1; index < this.Count; index++)
			{
				if (
					(way == "asc" && this[index].CompareTo(this[index - 1]) < 0)
					||
					(way == "desc" && this[index].CompareTo(this[index - 1]) > 0))
				{
					item = this[index];
					this[index] = this[index - 1];
					this[index - 1] = item;
					modified = true;
				}
			}
			if (modified)
				this.SortOrder(way);
		}
	}

	class Program
	{
		static void Main(string[] args)
		{
			StringList nomi = new StringList();
			nomi.Add("Giancarlo");
			nomi.Add("Andrea");
			nomi.Add("Daniele");
			nomi.Add("Fabio");
			nomi.Add("Stefano");
			nomi.Add("Davide");
			nomi.SortOrder("asc");
			foreach (string item in nomi)
				Console.WriteLine(item);
			Console.ReadLine();
		}
	}
}
Qualcuno sa dirmi se a livello accademico si utilizzano metodi migliori e quali?
Grazie