用C#實現九種經典排序算法
2010/11/8 15:26:14

  1、冒泡排序

  class EbullitionSorter

  {

  public void Sort(int[] arr)

  {

  int i, j, temp;

  bool done = false;

  j = 1;

  while ((j < arr.Length) && (!done))//判斷長度

  {

  done = true;

  for (i = 0; i < arr.Length - j; i++)

  {

  if (arr[i] > arr[i + 1])

  {

  done = false;

  temp = arr[i];

  arr[i] = arr[i + 1];//交換數據

  arr[i + 1] = temp;

  }

  }

  j++;

  }

  }

  }

  2、小根堆排序

  /// <summary>

  /// 小根堆排序

  /// </summary>

  /// <param name="dblArray"></param>

  /// <param name="StartIndex"></param>

  /// <returns></returns>

  private void HeapSort(ref double[] dblArray)

  {

  for (int i = dblArray.Length - 1; i >= 0; i--)

  {

  if (2 * i + 1 < dblArray.Length)

  {

  int MinChildrenIndex = 2 * i + 1;

  //比較左子樹和右子樹,記錄最小值的Index

  if (2 * i + 2 < dblArray.Length)

  {

  if (dblArray[2 * i + 1] > dblArray[2 * i + 2])

  MinChildrenIndex = 2 * i + 2;

  }

  if (dblArray[i] > dblArray[MinChildrenIndex])

  {

  ExchageValue(ref dblArray[i], ref dblArray[MinChildrenIndex]);

  NodeSort(ref dblArray, MinChildrenIndex);

  }

  }

  }

  }

  /// <summary>

  /// 節點排序

  /// </summary>

  /// <param name="dblArray"></param>

  /// <param name="StartIndex"></param>

  private void NodeSort(ref double[] dblArray, int StartIndex)

  {

  while (2 * StartIndex + 1 < dblArray.Length)

  {

  int MinChildrenIndex = 2 * StartIndex + 1;

  if (2 * StartIndex + 2 < dblArray.Length)

  {

  if (dblArray[2 * StartIndex + 1] > dblArray[2 * StartIndex + 2])

  {

  MinChildrenIndex = 2 * StartIndex + 2;

  }

  }

  if (dblArray[StartIndex] > dblArray[MinChildrenIndex])

  {

  ExchageValue(ref dblArray[StartIndex], ref dblArray[MinChildrenIndex]);

  StartIndex = MinChildrenIndex;

  }

  }

  }

  /// <summary>

  /// 交換值

  /// </summary>

  /// <param name="A"></param>

  /// <param name="B"></param>

  private void ExchageValue(ref double A, ref double B)

  {

  double Temp = A;

  A = B;

  B = Temp;

  }

  3、插入排序

  插入排序

  public class InsertionSorter

  {

  public void Sort(int[] arr)

  {

  for (int i = 1; i < arr.Length; i++)

  {

  int t = arr[i];

  int j = i;

  while ((j > 0) && (arr[j - 1] > t))

  {

  arr[j] = arr[j - 1];//交換順序

  --j;

  }

  arr[j] = t;

  }

  }

  }

  4、希爾排序

  public class ShellSorter

  {

  public void Sort(int[] arr)

  {

  int inc;

  for (inc = 1; inc <= arr.Length / 9; inc = 3 * inc + 1) ;

  for (; inc > 0; i

下一頁
返回列表
返回首頁 主站蜘蛛池模板: 亚洲午夜精品久久久久久人妖| 国产人人为我我为人| jlzz大全高潮多水老师| 日日躁夜夜躁狠狠躁超碰97| 亚洲一区精品无码| 毛片女人毛片一级毛片毛片| 制服丝袜一区二区三区| 色老二精品视频在线观看| 国产无遮挡吃胸膜奶免费看 | 一级毛片免费不卡| 日本免费看视频| 乱中年女人伦av三区| 欧美成人一区二区三区在线视频| 毛片A级毛片免费播放| 国产伦精品一区二区| 亚洲日本va在线观看| 国产高清视频网站| h小视频在线观看| 成人一级黄色片| 久久777国产线看观看精品卜| 日韩欧美不卡视频| 亚洲av永久无码精品水牛影视 | jlzz大全高潮多水老师| 成人免费网站视频www| 久久一本一区二区三区| 日本高清电影免费播放| 久久精品欧美日韩精品| 桃子视频观看免费完整| 亚洲国产AV无码一区二区三区 | 国产成人A亚洲精V品无码| bt天堂在线最新版在线| 国产精品第6页| 88av在线看| 国自产精品手机在线观看视频| japanese国产在线观看| 好男人社区www在线官网| 一本精品中文字幕在线| 成人凹凸短视频在线观看| 中文字幕无线码免费人妻| 无码av岛国片在线播放| 久久99精品久久久久久|