using System;
namespace StringSort
{
class StringSort
{
static string [] Strings = new string[] {"22","413","1","1","3","8"};
static void qSortStrings(string [] stringArray,int low,int high)
{
if (high>low)
{
int pivot = partition(stringArray,low,high);
qSortStrings(stringArray,low,pivot-1);
qSortStrings(stringArray,pivot+1,high);
}
}
static int partition(string [] stringArray,int low,int high)
{
int left = low;
int right = high;
int pivot = left;
string pivotItem = stringArray[pivot];
while (left < right)
{
while (left<=high && stringArray[left].CompareTo(pivotItem)<=0) left++;
while (right>=low && stringArray[right].CompareTo(pivotItem)>0) right--;
if (left<right && left<=high && right>=low)
{
swap(ref stringArray[left],ref stringArray[right]);
}
}
if (left<=high && right>=low)
{
stringArray[low] = stringArray[right];
stringArray[right] = pivotItem;
}
return pivot;
}
static void swap(ref string a,ref string b)
{
string c = b;
b = a;
a = c;
}
[STAThread]
static void Main(string[] args)
{
qSortStrings(Strings,0,Strings.Length-1);
for (int i=0; i<Strings.Length; i++)
{
Console.Write("{0}\n",Strings[i]);
}
Console.ReadLine();
}
}
}