有关在 C# 中交换数组中的项的考试练习

本文关键字:考试 练习 数组 交换 | 更新日期: 2023-09-27 18:36:02

所以考试题是这样的:

使用下面的方法标头编写方法。

public void Reverse( double [] values, int start, int finish){  

此方法将在较低的数组中反转数组中的元素 索引位置和上索引位置。

所以给定以下数组声明

double [] data = {8.5, 12.0, 23.2, 18.0, 15.5, 5.0, 10.5};

在调用方法之后Reverse(data, 2, 5); 数据将是

{8.5, 12.0, 5.0, 15.5, 18.0, 23.2, 10.5}

假设您已经编写了一个名为 swap 的方法,用于交换 数组中的两个元素;两个指数确定的元素 作为参数传递的值:

Swap(array, oneIndex, otherIndex)

我是这样回答的:

public void Reverse( double [] values, int start, int finish){  
do {
    Swap(values, int start, int finish);
    }
    start++;
    finish--;
}
while (start < finish)

我认为我的答案不正确,但我想不出别的。 Swap()方法已经完成了所有操作。有人可以纠正我吗?谢谢

有关在 C# 中交换数组中的项的考试练习

Swap 接受 oneIndex 和 otherIndex,而不是 start 和 finish。
你错过的是开始和结束之间的循环,在这个循环中,你必须用每个迭代的数字调用 swap 方法:

int iterationsNum = (finish - start) / 2 ;
for(int i=0;i<=iterationsNum;i++)
{
    if(start+i != finish-i)
    {
      swap(values, start+ i, finish-i);
    }
}

可能有一种方法可以删除我检查索引是否相同的不需要的迭代,但这是基本概念。

如果你在函数中对偏执进行一些工作并从函数调用中删除整数,它将起作用。

public static void Swap(double[] values, int firstIndex, int secondIndex)
{
    double temp = values[start];
    values[start] = values[finish];
    values[finish] = temp;
}
public static void Reverse( double [] values, int start, int finish)
{
    do
    {
        Swap(values, start, finish);
        start++;
        finish--;
    }
    while (start < finish);
}
static void Main(string[] args)
{
    double[] data = { 8.5, 12.0, 23.2, 18.0, 15.5, 5.0, 10.5 };
    Reverse(data, 2, 5);
    foreach (double number in data)
        Console.Write(number.ToString() + ", ");
    Console.ReadKey();
}

给:

8.5, 12, 5, 15.5, 18, 23.2, 10.5,

这里有两个可能的答案:

    static void Reverse(int[] values, int start, int finish)
    {
        int end = finish;
        for (int i = start; i < end ; i++)
        {
            Swap(values, i, end);
            end--;
        }
    }
    static void Reverse2(int[] values, int start, int finish)
    {
        int upper = finish;
        int lower = start;
        while (upper > lower)
        {
            Swap(values, lower, upper);
            lower++;
            upper--;
        }
    }