c++中数组的反转
Reverse of array in c++
int main()
{
int num[5];
int num2[5];
int n;
int j = 0;
cout << "provide size of array" << endl;
cin >> n;
for(int i =0; i< n; i++){
cin >> num[i];
}
cout << "the size of n is " << n << endl;
while(n != 0){
num2[j] = num[n-1];
n--;
j++;
}
for(int k = 0; k< 5; k++){
cout << num2[k] << endl;
}
}
我需要创建程序来反转数组,但没有交换,我已经这样做了,但这是最佳方式还是使用 swap() 是最佳方式?与交换一样,我不需要创建另一个数组。
如果不能使用交换,可以使用加法和减法
#include <array>
#include <iostream>
void reverse( int* arr, unsigned n ) {
if ( n==0 ) return;
unsigned i=0;
unsigned j=n-1;
for ( ; i<j; i++,j-- ) {
arr[i] = arr[i] + arr[j];
arr[j] = arr[i] - arr[j];
arr[i] = arr[i] - arr[j];
}
}
int main() {
std::array<int,5> values{1,2,3,4,5};
reverse( &values[0], values.size() );
for ( int val : values ) {
std::cout << val << " ";
}
return 0;
}
代码:https://godbolt.org/z/MrW8cEzPs
结果:
Program returned: 0
Program stdout
5 4 3 2 1
int main()
{
int num[5];
int num2[5];
int n;
int j = 0;
cout << "provide size of array" << endl;
cin >> n;
for(int i =0; i< n; i++){
cin >> num[i];
}
cout << "the size of n is " << n << endl;
while(n != 0){
num2[j] = num[n-1];
n--;
j++;
}
for(int k = 0; k< 5; k++){
cout << num2[k] << endl;
}
}
我需要创建程序来反转数组,但没有交换,我已经这样做了,但这是最佳方式还是使用 swap() 是最佳方式?与交换一样,我不需要创建另一个数组。
如果不能使用交换,可以使用加法和减法
#include <array>
#include <iostream>
void reverse( int* arr, unsigned n ) {
if ( n==0 ) return;
unsigned i=0;
unsigned j=n-1;
for ( ; i<j; i++,j-- ) {
arr[i] = arr[i] + arr[j];
arr[j] = arr[i] - arr[j];
arr[i] = arr[i] - arr[j];
}
}
int main() {
std::array<int,5> values{1,2,3,4,5};
reverse( &values[0], values.size() );
for ( int val : values ) {
std::cout << val << " ";
}
return 0;
}
代码:https://godbolt.org/z/MrW8cEzPs
结果:
Program returned: 0
Program stdout
5 4 3 2 1