QuickSort C# .NET剖析
本文向大家介紹QuickSort C# .NET,可能好多人還不知道QuickSort C# .NET,沒有關(guān)系,看完本文你肯定有不少收獲,希望本文能教會你更多東西。
本文旨在幫助您用 Visual Studio 構(gòu)建一個簡單的 C# 項目。它無法進行全面的介紹。我們鼓勵您查詢關(guān)于 C# 和 .NET 的其他資源,以便更多地學習這些技術(shù)。在完成本教程之后,您至少有了一個可用的項目,在您研究 Visual C# 時,可以從修改此這些代碼開始。
下面是 QuickSort C# .NET 示例應(yīng)用程序的完整源代碼。您可以復制、使用和分發(fā)這些代碼(無版權(quán)費)。注意,這些源代碼以"原樣"提供并且不作任何保證。
- //QuickSort C# .NET Sample Application
- //Copyright 2001-2002 Microsoft Corporation. All rights reserved.
- //
- //MSDN ACADEMIC ALLIANCE [http://www.msdn.microsoft.com/academic]
- //This sample is part of a vast collection of resources we developed for
- //faculty members in K-12 and higher education. Visit the MSDN AA web site for more!
- //The source code is provided "as is" without warranty.
- //
- // Import namespaces
- using System;
- using System.Collections;
- using System.IO;
- // Declare namespace
- namespace MsdnAA
- {
- // Declare application class
- class QuickSortApp
- {
- // Application initialization
- static void Main (string[] szArgs)
- {
- // Print startup banner
- Console.WriteLine ("\nQuickSort C#.NET Sample Application");
- Console.WriteLine ("Copyright (c)2001-2002 Microsoft Corporation. All rights reserved.\n");
- Console.WriteLine ("MSDN ACADEMIC ALLIANCE [http://www.msdnaa.net/]\n");
- // Describe program function
- Console.WriteLine ("This example demonstrates the QuickSort algorithm by reading an input file,");
- Console.WriteLine ("sorting its contents, and writing them to a new file.\n");
- // Prompt user for filenames
- Console.Write ("Source: ");
- string szSrcFile = Console.ReadLine ();
- Console.Write ("Output: ");
- string szDestFile = Console.ReadLine ();
- // Read contents of source file
- string szSrcLine;
- ArrayList szContents = new ArrayList ();
- FileStream fsInput = new FileStream (szSrcFile, FileMode.Open, FileAccess.Read);
- StreamReader srInput = new StreamReader (fsInput);
- while ((szSrcLine = srInput.ReadLine ()) != null)
- {
- // Append to array
- szContents.Add (szSrcLine);
- }
- srInput.Close ();
- fsInput.Close ();
- // Pass to QuickSort function
- QuickSort (szContents, 0, szContents.Count - 1);
- // Write sorted lines
- FileStream fsOutput = new FileStream (szDestFile, FileMode.Create, FileAccess.Write);
- StreamWriter srOutput = new StreamWriter (fsOutput);
- for (int nIndex = 0; nIndex < szContents.Count; nIndex++)
- {
- // Write line to output file
- srOutput.WriteLine (szContents[nIndex]);
- }
- srOutput.Close ();
- fsOutput.Close ();
- // Report program success
- Console.WriteLine ("\nThe sorted lines have been written to the output file.\n\n");
- }
- // QuickSort implementation
- private static void QuickSort (ArrayList szArray, int nLower, int nUpper)
- {
- // Check for non-base case
- if (nLower < nUpper)
- {
- // Split and sort partitions
- int nSplit = Partition (szArray, nLower, nUpper);
- QuickSort (szArray, nLower, nSplit - 1);
- QuickSort (szArray, nSplit + 1, nUpper);
- }
- }
- // QuickSort partition implementation
- private static int Partition (ArrayList szArray, int nLower, int nUpper)
- {
- // Pivot with first element
- int nLeft = nLower + 1;
- string szPivot = (string) szArray[nLower];
- int nRight = nUpper;
- // Partition array elements
- string szSwap;
- while (nLeft <= nRight)
- {
- // Find item out of place
- while (nLeft <= nRight && ((string) szArray[nLeft]).CompareTo (szPivot) <= 0)
- nLeftnLeft = nLeft + 1;
- while (nLeft <= nRight && ((string) szArray[nRight]).CompareTo (szPivot) > 0)
- nRightnRight = nRight - 1;
- // Swap values if necessary
- if (nLeft < nRight)
- {
- szSwap = (string) szArray[nLeft];
- szArray[nLeft] = szArray[nRight];
- szArray[nRight] = szSwap;
- nLeftnLeft = nLeft + 1;
- nRightnRight = nRight - 1;
- }
- }
- // Move pivot element
- szSwap = (string) szArray[nLower];
- szArray[nLower] = szArray[nRight];
- szArray[nRight] = szSwap;
- return nRight;
- }
- }
- }
關(guān)于 QuickSort C# .NET為了演示 QuickSort Visual C# .NET 示例應(yīng)用程序?qū)嶋H是如何運行的,我們提供了編譯好的可執(zhí)行文件。您可以通過編譯這些項目文件來創(chuàng)建自己的可執(zhí)行文件。單擊 Quicksort_Visual_CSharp_.NET.exe,下載源代碼項目文件和可執(zhí)行文件包。
使用應(yīng)用程序啟動 Command Prompt(從"開始"菜單運行"cmd.exe")。使用 CD 命令將目錄更改為可執(zhí)行文件所在的目錄。然后運行"quicksort.exe".
程序?qū)⑻崾灸峁┹斎牒洼敵鑫募拿Q。任何包含多行的文本文件均可使用。如果需要,可以使用記事本來創(chuàng)建一個此類文件。然后,該程序?qū)斎胛募膬?nèi)容進行排序,并且將其寫入輸出文件。
示例程序輸出下面是來自此 QuickSort C# .NET 應(yīng)用程序的一個實例的輸出。此示例演示了 QuickSort 算法,方法是讀取輸入文件、對文件的內(nèi)容進行排序,然后將其寫入新的文件。
【編輯推薦】