попробуйте следующее:
static void Main(string[] args)
{
GetCombination(new List<int> { 1, 2, 3 });
}
static void GetCombination(List<int> list)
{
double count = Math.Pow(2, list.Count);
for (int i = 1; i <= count - 1; i++)
{
string str = Convert.ToString(i, 2).PadLeft(list.Count, '0');
for (int j = 0; j < str.Length; j++)
{
if (str[j] == '1')
{
Console.Write(list[j]);
}
}
Console.WriteLine();
}
}
Я спросил этот точный вопрос (хотя в Java) , и был указан http://www.davekoelle.com/alphanum.html , который имеет алгоритм и реализации его на многих языках.
Это известно как естественная сортировка. Существует алгоритм здесь , который выглядит многообещающим.
остерегаться проблем с символами неASCII (см. запись в блоге Jeff на предмете).