1.2.8

1.2.8 #

解答 #

作用就是交换两个数组。

但在 C# 或 JAVA 中,数组变量实际是数组的一个引用(类似于指针),交换两个引用的效率与数组大小无关(可以理解为只是交换了数组的名字,数组实际内容在内存中的位置没有改变),都是常数时间的。

代码 #

// 读取 largeW.txt
var allNums = File.ReadAllLines("largeW.txt");
var n = allNums.Length;
var a = new int[n];
var b = new int[n];

// 数组 a 与数组 b 数字顺序相反
for (var i = 0; i < n; i++)
{
    a[i] = int.Parse(allNums[i]);
    b[n - i - 1] = a[i];
}

// 输出前5个数字
Console.WriteLine("Before Swap");
Console.Write("a:");
for (var i = 0; i < 5; i++)
{
    Console.Write($" {a[i]}");
}

Console.WriteLine();
Console.Write("b:");
for (var i = 0; i < 5; i++)
{
    Console.Write($" {b[i]}");
}

Console.WriteLine();

// 交换,现在 a 数组改叫 b 数组,而 b 数组改叫 a 数组了。
var t = a;
a = b;
b = t;

// 再次输出,此时通过名称 a 获取到的是原来 b 数组的内容,反之亦然。
Console.WriteLine("After Swap");
Console.Write("a:");
for (var i = 0; i < 5; i++)
{
    Console.Write($" {a[i]}");
}

Console.WriteLine();
Console.Write("b:");
for (var i = 0; i < 5; i++)
{
    Console.Write($" {b[i]}");
}

Console.WriteLine();