快速排序算法C#實現

 //快速排序算法C#實現

  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Text; 
  5.  
  6. namespace 快速排序算法1 
  7.     class Program 
  8.     { 
  9.         static void Main(string[] args) 
  10.         { 
  11.             int[] arrays = { 10, 32, 22, 37, 2, 5, 23, 11, 21, 15, 18, 3, 26 }; 
  12.             Console.WriteLine("進行快速排序前的結果如下:"); 
  13.             for (int i = 0; i < arrays.Length; i++) 
  14.             { 
  15.                 Console.Write(arrays[i] + " "); 
  16.             } 
  17.             quickSort(arrays, 0, arrays.Length - 1); 
  18.             Console.WriteLine("\n進行快速排序後的結果如下:"); 
  19.             for (int i = 0; i < arrays.Length; i++) 
  20.             { 
  21.                 Console.Write(arrays[i] + " "); 
  22.             } 
  23.             Console.ReadKey(); 
  24.         } 
  25.         static void quickSort(int[] arrays, int low, int high) 
  26.         { 
  27.             // 樞紐元,一般以第一個元素爲基準進行劃分 
  28.             int i = low; 
  29.             int j = high; 
  30.             if (low < high) 
  31.             { 
  32.                 // 從數組兩端交替地向中間掃描 
  33.                 int key = arrays[low]; 
  34.                 // 進行掃描的指針i,j;i從左邊開始,j從右邊開始 
  35.                 while (i < j) 
  36.                 { 
  37.                     while (i < j && arrays[j] > key) 
  38.                     { 
  39.                         j--; 
  40.                     }// end while 
  41.                     if (i < j) 
  42.                     { 
  43.                         // 比樞紐元素小的移動到左邊 
  44.                         arrays[i] = arrays[j]; 
  45.                         i++; 
  46.                     }// end if 
  47.                     while (i < j && arrays[i] < key) 
  48.                     { 
  49.                         i++; 
  50.                     }// end while 
  51.                     if (i < j) 
  52.                     { 
  53.                         // 比樞紐元素大的移動到右邊 
  54.                         arrays[j] = arrays[i]; 
  55.                         j--; 
  56.                     }// end if 
  57.                 }// end while 
  58.                 // 樞紐元素移動到正確位置 
  59.                 arrays[i] = key; 
  60.                 // 前半個子表遞歸排序 
  61.                 quickSort(arrays, low, i - 1); 
  62.                 // 後半個子表遞歸排序 
  63.                 quickSort(arrays, i + 1, high); 
  64.             }// end if  
  65.         } 
  66.     } 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章