1: using System;
     2: 
     3: namespace StringSort
     4: {
     5: 	/// <summary>
     6: 	/// Summary description for Class1.
     7: 	/// </summary>
     8: 	class StringSort
     9: 	{
    10: 		static string [] Strings = new string[] {"22","413","1","1","3","8"};
    11: 		static void qSortStrings(string [] stringArray,int low,int high)
    12: 		{
    13: 			if (high>low) 
    14: 			{
    15: 				int pivot = partition(stringArray,low,high);
    16: 				qSortStrings(stringArray,low,pivot-1);
    17: 				qSortStrings(stringArray,pivot+1,high);
    18: 			}
    19: 		}
    20: 
    21: 		static int partition(string [] stringArray,int low,int high)
    22: 		{
    23: 			int left = low;
    24: 			int right = high;
    25: 			int pivot = left;
    26: 			string pivotItem = stringArray[pivot];
    27: 			while (left < right) 
    28: 			{
    29: 				while (left<=high && stringArray[left].CompareTo(pivotItem)<=0) left++;
    30: 				while (right>=low && stringArray[right].CompareTo(pivotItem)>0) right--;
    31: 				if (left<right && left<=high && right>=low) 
    32: 				{
    33: 					swap(ref stringArray[left],ref stringArray[right]);
    34: 				}
    35: 			}
    36: 			if (left<=high && right>=low) 
    37: 			{
    38: 				stringArray[low] = stringArray[right];
    39: 				stringArray[right] = pivotItem;
    40: 			}
    41: 			return pivot;
    42: 		}
    43: 
    44: 		static void swap(ref string a,ref string b)
    45: 		{
    46: 			string c = b;
    47: 			b = a;
    48: 			a = c;
    49: 		}
    50: 		/// <summary>
    51: 		/// The main entry point for the application.
    52: 		/// </summary>
    53: 		[STAThread]
    54: 		static void Main(string[] args)
    55: 		{
    56: 			qSortStrings(Strings,0,Strings.Length-1);
    57: 			for (int i=0; i<Strings.Length; i++) 
    58: 			{
    59: 				Console.Write("{0}\n",Strings[i]);
    60: 			}
    61: 			Console.ReadLine();
    62: 		}
    63: 	}
    64: }
    65: