题目的主要信息:
- 随机输入6个整数到数组中,按照格式输出该数组(题目已经输出)
- 将数组元素逆序,按照各自再次输出逆序后的数组(题目代码已给出输出部分)
具体做法:
输入输出代码都已经给出,我们的主要任务就是将数组元素逆序。
逆序就是首到尾,尾到首,因此我们可以想到用双指针指向数组的首尾元素,交换其位置,指针再不断向中间靠拢,不断交换位置。
#include <iostream>
using namespace std;
int main() {
int arr[6] = { 0 };
int len = sizeof(arr) / sizeof(int);
for (int i = 0; i < len; i++) {
cin >> arr[i];
}
cout << "["; //题目输出正序数组
for (int i = 0; i < len; i++) {
if (i == len - 1) {
cout << arr[i] << "]" << endl;
break;
}
cout << arr[i] << ", ";
}
// write your code here......
int left = 0, right = 5; //双指针从首尾开始
while(left < right){
int temp = arr[left]; //交换指针元素
arr[left] = arr[right];
arr[right] = temp;
left++; //指针向中间靠
right--;
}
cout << "["; //题目输出逆序数组
for (int i = 0; i < len; i++) {
if (i == len - 1) {
cout << arr[i] << "]" << endl;
break;
}
cout << arr[i] << ", ";
}
return 0;
}
复杂度分析:
- 时间复杂度:O(n),n为数组长度,循环次数为数组长度的一半
- 空间复杂度:O(1),无额外空间