1.2.8

上次更新:2019-04-17
发现了题解错误/代码缺陷/排版问题?请点这里:如何:提交反馈

解答

作用就是交换两个数组。

但在 C# 或 JAVA 中,数组变量实际是数组的一个引用(类似于指针),交换两个引用的效率与数组大小无关,都是常数时间的。

代码

using System;
using System.IO;

namespace _1._2._8
{
    /*
     * 1.2.8
     * 
     * 设 a[] 和 b[] 均为长数百万的整型数组。以下代码的作用是什么?有效吗?
     * int[] t = a; a = b; b = t;
     * 
     */
    class Program
    {
        static void Main(string[] args)
        {
            //读取 largeW.txt
            string[] allNums = File.ReadAllLines("largeW.txt");
            int N = allNums.Length;
            int[] a = new int[N];
            int[] b = new int[N];

            //数组 a 与数组 b 数字顺序相反
            for (int 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 (int i = 0; i < 5; ++i)
            {
                Console.Write($" {a[i]}");
            }
            Console.WriteLine();
            Console.Write("b:");
            for (int i = 0; i < 5; ++i)
            {
                Console.Write($" {b[i]}");
            }
            Console.WriteLine();

            //交换
            int[] t = a;
            a = b;
            b = t;

            //再次输出
            Console.WriteLine("After Swap");
            Console.Write("a:");
            for (int i = 0; i < 5; ++i)
            {
                Console.Write($" {a[i]}");
            }
            Console.WriteLine();
            Console.Write("b:");
            for (int i = 0; i < 5; ++i)
            {
                Console.Write($" {b[i]}");
            }
            Console.WriteLine();
        }
    }
}
上一题 下一题