日期:2014-05-18  浏览次数:20745 次

新手问个问题
请先看一段程序:鸡尾酒排序法
 class Program
  {
  static int[] intArray;
  static void Change(ref int left,ref int right)
  {
  int temp;
  temp = left;
  left = right;
  right = temp;
  }
   
  static void CockSorts(int[] intArray)
  {
  int low, up, index;
  low = 0;
  up = intArray.Length - 1;
  index = low;
  while (up > low)
  {
  for (int i = low; i < up; i++)
  {
  if (intArray[i] > intArray[i + 1])
  {
  Change(ref intArray[i], ref intArray[i + 1]);
  index = i;
  }
  }
  up = index;
  for (int i = up; i > low ; i--)
  {
  if (intArray[i] < intArray[i - 1])
  {
  Change(ref intArray[i], ref intArray[i - 1]);
  index = i;
  }
  }
  low = index; }
  }
  static void Sort(int[] intArr)
  {
  intArray = intArr;
  CockSorts(intArray);
  }
  static void Main(string[] args)
  {
  int[] arr = new int[] { 3, 9, 27, 6, 18, 12, 21, 15 };
  Sort(arr);
  for (int i = 0; i < arr.Length; i++)
  {
  Console.Write(arr[i] + " ");
  }
  Console.ReadLine();
  }
  }
红色部分是记录最后一个交换的位置,这点我不是很明白,我把这两句去掉的话运行出来是什么都不显示,这是为什么呢,请高手帮忙详细解释一下。。

------解决方案--------------------
楼主:一个道理。

你可以用断点进行跟踪一下。

你会发现你学到的更多。