C 语言反转数组17 Mar 2025 | 6 分钟阅读 任务是反转给定数组的元素。我们可以使用多种方法来完成此任务,这是一个基本问题。它是面试中最常被问到的问题之一。本教程列出了在 C 语言中反转数组的所有可能方法。 例如,假设给定一个数组 ![]() 我们需要反转数组并打印以下内容 ![]() 在 Python 中,我们可以使用列表切片并指定步长为 -1 -> list [::-1] 来获取反转后的列表。在 C 语言中,没有切片机制。因此,我们需要深入底层解决。 可能的方法
1. 声明另一个数组我们可以声明另一个数组,从后向前迭代原始数组,并将元素从开头复制到新数组。 代码 输出 Enter the size of the array: 5 Enter the elements: 1 2 3 4 5 The Reversed array: 5 4 3 2 1 这里有一个例子 如果数组是 ![]() 我们创建一个大小相同的新数组 rev = 6 ![]() 第一次迭代: i = n - 1 = 5,i >= 0,j = 0 rev[0] = arr[5] 同样 第二次迭代: rev[1] = arr[4] 第三次迭代: rev[2] = arr[3] 第四次迭代: rev[3] = arr[2] 第五次迭代: rev[4] = arr[1] 第六次迭代: rev[5] = arr[0] 因此,结果反转数组 ![]() 2. 迭代和交换迭代数组的一半 我们迭代到 size/2 的位置,对于索引为 i 的元素,我们将其与索引为 (size - i - 1) 的元素进行交换。 这里有一个例子 如果数组是 ![]() size = 6,size/2 = 3 第一次迭代: i = 0,i < 3 我们交换 arr[i] 和 arr[n - i - 1] arr[0] <-> arr[5] ![]() 第二次迭代: i = 1,i < 3 我们交换 arr[i] 和 arr[n - i - 1] arr[1] <-> arr[4] ![]() 第三次迭代: i = 2,i < 3 我们交换 arr[i] 和 arr[n - i - 1] arr[2] <-> arr[3] 当 i = 3 时终止,因为 i == n/2 结果反转数组 ![]() 代码 输出 Enter the size of the array: 6 Enter the elements: 1 2 3 4 5 6 The reversed array: 6 5 4 3 2 1 从数组两端迭代 我们可以一直迭代并交换数组两侧的元素,直到到达中间元素。 代码 输出 Enter the size of the array: 6 Enter the elements: 1 2 3 4 5 6 The Reversed array: 6 5 4 3 2 1 这里有一个例子 如果数组是 ![]() size = 6 l = 0,h = size - 1 = 5 第一次迭代: l = 0,h = 5 我们交换 arr[l] 和 arr[h] arr[0] <-> arr[5] ![]() 第二次迭代: l = 1,h = 4 我们交换 arr[l] 和 arr[h] arr[1] <-> arr[4] ![]() 第三次迭代: l = 2,h = 3 我们交换 arr[l] 和 arr[h] arr[2] <-> arr[3] 当 l = h = 3 时终止,因为 l !< h 结果反转数组 ![]() 递归方式输出 Enter the size of the array: 6 Enter the elements: 1 2 3 4 5 6 The reversed array: 6 5 4 3 2 1 3. 使用指针指针是一种特殊的变量,可以存储其他变量和指针的地址。我们可以使用指针而不是传统的数组索引来交换数组元素。 关于指针的重要说明
代码 输出 Enter the size of the array: 6 Enter the elements into the array: 1 2 3 4 5 6 The reversed array: 6 5 4 3 2 1 理解
下一主题C 语言三路归并排序 |
我们请求您订阅我们的新闻通讯以获取最新更新。