// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int* reversearray(int a[], int n) {
int i, temp;
for (i = 0; i <= n / 2 - 1; i++) {
temp = a[i];
a[i] = a[n - 1 - i];
a[n - 1 - i] = temp;
}
return a;
}
int main()
{
int size = 10;
int mine[100] = {};
int i;
for (i = 0; i < size; i++) {
mine[i] = rand() % size - 1;;
cout << mine[i] << " ";
}
cout << endl;
int* a = reversearray(mine, size);
for (int i = 0; i < size; i++) {
cout << a[i] << " ";
}
cout << endl; //输出结果:1 2 3 0 0 0 0 0 0 0
return 0;
}
这个算法于问题规模无关,所以一他的空间复杂度实O(1)。
下面实现另一个
// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int* reversearray(int a[], int n) {
int i, temp;
for (i = 0; i <= n / 2 - 1; i++) {
temp = a[i];
a[i] = a[n - 1 - i];
a[n - 1 - i] = temp;
}
return a;
}
int* reversearray2(int a[], int n) {
int i;
int temp[10];
for (i = 0; i <= n - 1; i++) {
temp[i] = a[n- 1 - i];
}
for (i = 0; i <= n - 1; i++) {
a[i]=temp[i] ;
}
return a;
}
int main()
{
int size = 10;
int mine[100] = {};
int i;
for (i = 0; i < size; i++) {
mine[i] = rand() % size - 1;;
cout << mine[i] << " ";
}
cout << endl;
int* a = reversearray2(mine, size);
for (int i = 0; i < size; i++) {
cout << a[i] << " ";
}
cout << endl; //输出结果:1 2 3 0 0 0 0 0 0 0
return 0;
}
空间复杂度为O(n)