编写一个把有 n 个元素的数组 a 中的元素就地逆置的函数,所谓就地逆置就 是逆置后的元素还保存在数组 a 中。并设计一个测试主函数进行测试。
时间: 2023-04-10 08:03:16 浏览: 81
可以使用以下代码实现:
```lua
function reverseArray(a)
local n = #a
for i = 1, math.floor(n / 2) do
local j = n - i + 1
a[i], a[j] = a[j], a[i]
end
end
function testReverseArray()
local a = {1, 2, 3, 4, 5}
reverseArray(a)
assert(a[1] == 5)
assert(a[2] == 4)
assert(a[3] == 3)
assert(a[4] == 2)
assert(a[5] == 1)
local b = {1, 2, 3, 4}
reverseArray(b)
assert(b[1] == 4)
assert(b[2] == 3)
assert(b[3] == 2)
assert(b[4] == 1)
end
```
测试主函数 testReverseArray() 可以用来测试 reverseArray() 函数是否正确。
相关问题
编写一个把有n个元素的数组a中的元素就地逆置的函数。所谓就地逆置,就是逆置后的
结果直接存储在原数组a中,不需要额外的空间。
答案:可以使用双指针的方法,从数组的两端开始交换元素,直到两个指针相遇。具体代码如下:
void reverse(int a[], int n) {
int i = 0, j = n - 1;
while (i < j) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
i++;
j--;
}
}
Java线性表的数组实现: 实现就地逆置函数并将结果运行出来
在Java中,线性表的数组实现可以通过`java.util.ArrayList`类来表示,但这里您提到的是要实现一个就地逆置函数,我们可以通过编写一个方法来实现数组的就地逆置(即在原数组上操作,不需要额外的数组空间)。
下面是一个简单的Java方法,用于实现数组的就地逆置:
```java
public class ArrayInversion {
public static void main(String[] args) {
// 示例数组
int[] arr = {1, 2, 3, 4, 5};
System.out.println("原数组:");
printArray(arr);
// 就地逆置数组
invertArray(arr);
System.out.println("逆置后的数组:");
printArray(arr);
}
// 就地逆置数组的方法
public static void invertArray(int[] arr) {
if (arr == null) {
return;
}
int start = 0;
int end = arr.length - 1;
while (start < end) {
// 交换前后对应的元素
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
// 打印数组的方法
public static void printArray(int[] arr) {
for (int value : arr) {
System.out.print(value + " ");
}
System.out.println();
}
}
```
在这个代码示例中,`invertArray`方法接受一个整型数组`arr`作为参数,通过交换数组的首尾对应元素,直到达到数组的中间位置,完成数组的就地逆置。`printArray`方法用于打印数组的内容。
阅读全文