本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。
如果仅仅是为了通过测试,可以省略第2步,直接将数组倒序输出就行。
#include <stdio.h> int main(int argc, char const *argv[]) { int length = 1; scanf("%d", &length); int a[length]; for (int i = 0; i < length; ++i) { scanf("%d", &a[i]); } for (int i = length - 1; i > 0; i--) printf("%d ", a[i]); printf("%d", a[0]); return 0; }定义一个新数组,将原数组从后往前复制一份再输出就行。 但需要耗费更多的空间。 时间复杂度O(n),空间复杂度O(n)?
int b[length]; for (int i = 0; i < length; ++i) b[i] = a[length - 1 - i];只需要一个临时变量,将原数组首位对调即可再输出即可 时间复杂度O(n/2),空间复杂度O(1)?
for (i = 0; i < length<<1; ++i) { int temp; temp = a[i]; a[i] = a[length - 1 - i]; a[length - 1 - i] = temp; }