public new void Sort() { string[] a = this.ToArray(); this.Clear(); //sort array and refill contents of this (faster than directly sorting List) StringSort.Sort(a); this.AddRange(a); }
static void SortTest1(string[] args) { CreateRandomFile(@"..\..\dic.txt"); string[] aArray = File.ReadAllLines(@"Rndm-dic.txt", Encoding.Default); string[] bArray = File.ReadAllLines(@"Rndm-dic.txt", Encoding.Default); List <string> aList = new List <string>(aArray); List <string> sList = new List <string>(aArray); List <string> sList2 = new List <string>(aArray); SortTests.Sorting.sfList sList3 = new sfList(aArray); KeyedList <string, int> kList = new KeyedList <string, int>(aArray.Length); KeyedList <string, int> kListDesc = new KeyedList <string, int>(aArray.Length); int val = 1; foreach (string s in sList) { kList.Add(s, val); //val contains original line position of string kListDesc.Add(s, val); ++val; } sList.Clear(); TimeCounter StopWatch = new TimeCounter(); StopWatch.SetOneProcessorAffinity(); Console.WriteLine("base Cycles = {0} IsHighRes = {1}", TimeCounter.Frequency, TimeCounter.IsHighResolution); StopWatch.Start(); //List<string> cList = StringSort.Sort(aList); List <string> cList = new List <string>(aList); StopWatch.Stop(); Console.WriteLine("MS to sort copy: {0}", StopWatch.ElapsedMilSec); int n = 0; foreach (string s in cList) { Console.WriteLine(s); if (++n > 1) { break; } } aList.Clear(); StopWatch.StartNew(); Array.Sort <string>(bArray, CompareString); StopWatch.Stop(); Console.WriteLine("MS to Array.Sort<string> bArray: {0}", StopWatch.ElapsedMilSec); for (int i = 0; i < bArray.Length; ++i) { Console.WriteLine(bArray[i]); if (i == 1) { break; } } //reset bArray to unsorted aArray.CopyTo(bArray, 0); StopWatch.StartNew(); StringSort.Sort(aArray); StopWatch.Stop(); Console.WriteLine("MS to sort aArray: {0}", StopWatch.ElapsedMilSec); for (int i = 0; i < aArray.Length; ++i) { Console.WriteLine(aArray[i]); if (i == 1) { break; } } StopWatch.StartNew(); Sedgewick.Sort(ref bArray); StopWatch.Stop(); Console.WriteLine("MS to Sedgewick Sort bArray: {0}", StopWatch.ElapsedMilSec); for (int i = 0; i < bArray.Length; ++i) { Console.WriteLine(bArray[i]); if (i == 1) { break; } } StopWatch.StartNew(); sList2.Sort(CompareString); //sort using List<string> method //sList2.Sort(CompareString); StopWatch.Stop(); Console.WriteLine("MS to List.Sort() sList2: {0}", StopWatch.ElapsedMilSec); for (int i = 0; i < sList2.Count; ++i) { Console.WriteLine(sList2[i]); if (i == 1) { break; } } sList2.Clear(); StopWatch.StartNew(); sList3.Sort(); //sort using StringSort replacement StopWatch.Stop(); Console.WriteLine("MS to sfList.Sort() sList3: {0}", StopWatch.ElapsedMilSec); for (int i = 0; i < sList3.Count; ++i) { Console.WriteLine(sList3[i]); if (i == 1) { break; } } StopWatch.StartNew(); kList.Sort(); StopWatch.Stop(); Console.WriteLine("MS to KeyedList.Sort() kList: {0}", StopWatch.ElapsedMilSec); for (int i = 0; i < kList.Count; ++i) { Console.WriteLine(kList[i]); if (i == 1) { break; } } //test the sort bool sorted = IsSortedTest(kList, kList.SortAscd); Console.WriteLine("Test: kList is sorted = {0}", sorted); kListDesc.SortAscd = false; //try sorting in descending order StopWatch.StartNew(); kListDesc.Sort(); StopWatch.Stop(); Console.WriteLine("MS to KeyedList.Sort() kListDesc: {0}", StopWatch.ElapsedMilSec); for (int i = 0; i < kListDesc.Count; ++i) { Console.WriteLine(kListDesc[i]); if (i == 1) { break; } } //test the sort sorted = IsSortedTest(kListDesc, kListDesc.SortAscd); Console.WriteLine("Test: kListDesc is sorted descending = {0}", sorted); string[] wArray = File.ReadAllLines(@"Rndm-dic.txt", Encoding.Default); //this is slower than stringSort //WQSort wqs = new WQSort(); //StopWatch.StartNew(); //wqs.Sort(wArray); //StopWatch.Stop(); //Console.WriteLine("MS to WQSort.Sort() wArray: {0}", StopWatch.ElapsedMilSec); //for (int i = 0; i < wArray.Length; ++i) //{ // Console.WriteLine(wArray[i]); // if (i == 1) break; //} List <int> lstInt = new List <int>(wArray.Length); Random rand = new Random((int)StopWatch.ElapsedMilSec); for (int i = 0; i < wArray.Length; ++i) { lstInt.Add(rand.Next()); } StopWatch.StartNew(); lstInt.Sort(); StopWatch.Stop(); Console.WriteLine("MS to List<int>.Sort() with {0} elements: {1:f1}", wArray.Length, StopWatch.ElapsedMilSec); Console.WriteLine("First, Second, Last integer in sorted List"); Console.WriteLine(lstInt[0]); Console.WriteLine(lstInt[1]); Console.WriteLine(lstInt[wArray.Length - 1]); StopWatch.RestoreProcessorAffinity(); //set this thread back to default Proccessor Affinity }