用C++反转数组

Naj*_*qib -1 c++ algorithm

请检查我的代码反转数组,我找不到错误.它在函数调用之前和之后显示相同的数组,我不知道为什么?

#include <iostream>
using namespace std;

void reverseArray(int *arr, int size)
{
    int *Copy_arr = new int[size];
    int temp;
    for (int i = 0; i < size; i++)
    {
        Copy_arr[i] = arr[i];
    }

    for (int i = 0; i < size; i++)
    {
        temp = arr[i];
        arr[i] = arr[(size - 1) - i];
        arr[(size - 1) - i] = temp;
    }

    cout << "Array before function call was: ";
    for (int i = 0; i < size; i++)
    {
        cout << Copy_arr[i] << " ";
    }
    cout << endl << "Array after function call is: ";
    for (int i = 0; i < size; i++)
    {
        cout << arr[i] << " ";
    }
    cout << endl;
}

void main()
{
    int size;
    cout << "Enter size of array\n";
    cin >> size;
    int *p = new int[size];
    cout << "Enter the elements of array\n";
    for (int i = 0; i < size; i++)
    {
        cin >> p[i];
    }
    reverseArray(p, size);
}
Run Code Online (Sandbox Code Playgroud)

Jar*_*d42 12

for (int i = 0; i < size; i++)
{
    temp = arr[i];
    arr[i] = arr[(size - 1) - i];
    arr[(size - 1) - i] = temp;
}
Run Code Online (Sandbox Code Playgroud)

你反转数组两次.

arr[0]arr[size - 1]交换为i == 0AND i == size - 1.

它应该是

for (int i = 0; i < size / 2; i++)
{
    std::swap(arr[i], arr[(size - 1) - i]);
}
Run Code Online (Sandbox Code Playgroud)

甚至更简单

std::reverse(arr, arr + size);
Run Code Online (Sandbox Code Playgroud)