新手问个问题
请先看一段程序:鸡尾酒排序法
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();
}
}
红色部分是记录最后一个交换的位置,这点我不是很明白,我把这两句去掉的话运行出来是什么都不显示,这是为什么呢,请高手帮忙详细解释一下。。
------解决方案--------------------
楼主:一个道理。
你可以用断点进行跟踪一下。
你会发现你学到的更多。