程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 你知道C#各種排序的編寫及性能嗎(3)

你知道C#各種排序的編寫及性能嗎(3)

編輯:關於C語言
.快速排序

基礎思想:通過不斷比較關鍵碼,以某咯記錄為界(該記錄成為支點),將待排序列分成兩部分。其中,一小部分滿足所有記錄的關鍵碼都大於或等於支點記錄為界將待排序列按關鍵碼中分成兩部分的過程,稱為一次劃分,直到整個序列按關鍵碼有序為止。

代碼如下:

/// <summary>
/// 快速排序算法
/// </summary>
public class QuickSort : IAction
{

 #region IAction 成員

 public void Action()
 {
  int[] array = Program.RandomArray();

  QuickSortArray(array, 0, array.Length - 1);
 }

 private void QuickSortArray(int[] arr, int low, int high)
 {
  int i = low;
  int j = high;
  int tmp = arr[low];
  while (low < high)
  {
   while ((low < high) && arr[high] >= tmp)
   {
    --high;
   }
   arr[low] = arr[high];
   while ((low < high) && arr[low] <= tmp)
   {
    ++low;
   }
   arr[high] = arr[low];
   --high;
  }
   arr[low] = tmp;
   if (i < low - 1)
   {
    QuickSortArray(arr, i, low - 1);
   }
   if (j > low + 1)
   {
    QuickSortArray(arr, low + 1, j);
   }
 }

 #endregion
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved