C++:基本数组交换

Ali*_*Ali 1 c++ arrays algorithm swap

我根本无法理解为什么以下代码不起作用.什么可能是交换操作不起作用的原因;

#include <iostream>

using namespace std;

void rotateK(int* arr, int start, int finish) {
    int temp;
    for(int i=0;i<=finish;i++) {
        temp=arr[i];
        arr[i]=arr[finish-i];
        arr[finish-i]=temp;
    }
    for(int i=0;i<=finish;i++)
        cout<<arr[i]<<" ";
    cout<<endl;
}


int main(){
    int arr[5]={1,2,3,4,5};
    rotateK(arr,0,4);
    return 0;

}
Run Code Online (Sandbox Code Playgroud)

Luc*_*ore 9

它确实有效(虽然不是你希望它如何工作).但是将元素交换两次,这就是处理后的数组与原始数组相同的原因.

你可能想要:

for(int i=0 ; i<=finish/2 ; i++)
Run Code Online (Sandbox Code Playgroud)

甚至

for(int i=start;i<=(finish-start)/2 + start;i++)
Run Code Online (Sandbox Code Playgroud)

所以你实际上使用start.

  • 也许`i <=(完成 - 开始)/ 2`? (2认同)