c++ - 在 C++ 中通过指针复制数组

标签 c++ arrays pointers

我以前从未用 C++ 编程过,我正在尝试找出如何在 C++ 方法中递归传递数组的段。我正在尝试将以下伪代码转换为 C++。

SlowSort(A[1...n])
if n = 2
    if A[1] > A[2]
        Swap(A[1], A[2])
else if n > 2
    SlowSort(A[1...(2n/3)])
    SlowSort(A[(n/3+1)... n])
    SlowSort(A[1...(2n/3)])

递归调用是我遇到的问题。我正在考虑创建两个指向所需位置的新数组,但不知道如何去做,具体来说就是这样做并定义数组的长度。我试过用谷歌搜索并搜索这个网站,但据我所知,上面似乎没有任何内容。另外,为了防止我在代码中的某个地方弄错了,这里是我的第一部分。

int SlowSort(int A[])
{
int length = (sizeof(A)/sizeof(*A));
    if(length ==2)
    {
        if(A[0] > A[1])
        {
            int temp = A[0];
            A[0] = A[1];
            A[1] = temp;
        }
    }

简而言之,如何将else if语句转换为C++?解释也很好。

谢谢

最佳答案

您需要将索引 传递到数组中,然后使用它们。

void SlowSort(int A[], int left, int right)
{
    if (right - left == 2)
        if (A[left] > A[right])
            Swap(A[left], A[right]);
    else
    {
        int n = right - left + 1;
        SlowSort(A, left, 2 * n / 3);
        SlowSort(A, left + n / 3 + 1, right);
        SlowSort(A, left, left + 2* n / 3);
}

上面的代码对于算法应该做什么可能不正确,但你明白我试图描述的想法。问题是:您不复制数组。相反,始终传递相同的数组和您正在排序的范围(即索引)。

关于c++ - 在 C++ 中通过指针复制数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22207381/

相关文章:

c++ - 嵌套结构字段的 Clang 格式规则

c++ - 动态转换智能指针

java - Java 中的 HashMap

c++ - 将 glTexSubimage2d 与动态大小的纹理数组一起使用

c++ - 分配字符串指针字符串值时出现问题

c++ - 使用迭代器进行二分搜索

c++ - 从 std::thread 访问类变量

java - 生成特定的随机字符串数组

c++正确删除结构和指针

c - 使用指针访问二维数组会出现错误