using System.Collections.Generic;
static int compareTo(String A, String B){
for (int i = 0; i < (A.Length < B.Length ? A.Length : B.Length); i++)
if (A[i] != B[i]) return A[i] - B[i];
return A.Length < B.Length ? -1 : 1;
static string normalize(string str){
static List<string> swap (List<string> StrSet, int a, int b)
static List<string> lexicographSort(List<string> StrSet, bool ignoreCase){
List<string> normSet = new List<string>();
List<string> copySet = new List<string>(StrSet);
foreach (var str in StrSet)
string temp = normalize(str);
} else normSet = new List<string>(StrSet);
for (int i = 0; i < normSet.Count - 1; )
if (compareTo(normSet[i],normSet[i+1]) > 0)
normSet = swap(normSet,i,i+1);
copySet = swap(copySet,i,i+1);
public static void Main()
lexicographSort(new List<string>{"hfhfh","Hfhfhf","abc","ABDHBCH","Samat","Ab",""},true).Dump();