【发布时间】:2019-06-21 17:29:30
【问题描述】:
我正在尝试使用 for 循环来反转 15 个数字的数组,但由于某种原因,数组顺序保持不变。
我的代码如下所示:
int main()
{
int arr[15] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
int i, j, temp;
for (i = 0; i < 15; i++)
{
temp = arr[15 - i - 1];
arr[15 - i - 1] = arr[i];
arr[i] = temp;
}
j = 0;
do {
std::cout << arr[j] << " ";
j++;
} while (j < 15);
}
知道我做错了什么吗?
【问题讨论】:
-
问问自己,如果每次迭代交换 2 个元素,你需要多少次迭代
number_of_swaps == number_of_elements(或者更哲学地说:你能走进森林多远) -
你倒转了两次。
-
下次贴上sn-p可以编译的代码;即把
int main()放在你写的东西周围。更好的是,编辑问题。 -
我开始认为这应该是一个 c++-faq。
-
好消息是,既然您了解了算法,您就不必再这样做了。
std::reverse带有标准库是有原因的。