如何在 C++、Python 和 JavaScript 中反转数组

数组是存储在连续内存位置的项目的集合。数组的反转是对数组执行的最常见操作之一。在本文中,您将学习如何使用迭代和递归方法编写自己的数组反转实现。

反转数组的迭代方法

问题陈述

你得到一个数组arr 。您需要反转数组的元素,然后打印反转的数组。您需要使用循环来实现此解决方案。

示例 1 :让 arr = [45, 12, 67, 63, 9, 23, 74]

反向 arr = [74, 23, 9, 63, 67, 12, 45]

因此输出为:74 23 9 63 67 12 45。

示例 2 :让 arr = [1, 2, 3, 4, 5, 6, 7, 8]

反向 arr = [8, 7, 6, 5, 4, 3, 2, 1]

因此输出为:8 7 6 5 4 3 2 1。

使用循环反转数组的方法

您可以按照以下方法使用循环反转数组的元素:

  1. 初始化索引变量“i”和“j”,使它们分别指向数组的第一个 (0) 和最后一个 (sizeOfArray – 1) 索引。
  2. 在循环中,将索引 i 处的元素与索引 j 处的元素交换。
  3. 将 i 的值增加 1,将 j 的值减少 1。
  4. 运行循环直到 i < sizeOfArray/2。

使用循环反转数组的 C++ 程序

下面是使用循环反转数组的 C++ 程序:

 // C++ program to reverse the elements of an array using loops
#include <iostream>
using namespace std;

void reverseArr(int arr[], int size)
{
for(int i=0, j=size-1; i<size/2; i++, j--)
{
swap(arr[i], arr[j]);
}
}
void printArrayElements(int arr[], int size)
{
for(int i=0; i<size; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
// Driver Code
int main()
{
int arr[] = {45, 12, 67, 63, 9, 23, 74};
int size = sizeof(arr)/sizeof(arr[0]);
// Printing the original array
cout << "Original Array: " << endl;
printArrayElements(arr, size);
// Reversing the array
reverseArr(arr, size);
// Printing the reversed array
cout << "Reversed array: " << endl;
printArrayElements(arr, size);
return 0;
}

输出:

 Original Array:
45 12 67 63 9 23 74
Reversed array:
74 23 9 63 67 12 45

相关:如何在 C++、Python 和 JavaScript 中反转字符串

使用循环反转数组的 Python 程序

下面是使用循环反转数组的 Python 程序:

 # Python program to reverse the elements of a list using loops
def reverseList(arr, size):
i = 0
j = size-1
while i<size/2:
arr[i], arr[j] = arr[j], arr[i]
i = i + 1
j = j - 1
def printListElements(arr, size):
for i in range(size):
print(arr[i], end=" ")
print()
# Driver Code
arr = [45, 12, 67, 63, 9, 23, 74]
size = len(arr)
# Printing the original array
print("Original Array:")
printListElements(arr, size)
# Reversing the array
reverseList(arr, size)
# Printing the reversed array
print("Reversed Array:")
printListElements(arr, size)

输出:

 Original Array:
45 12 67 63 9 23 74
Reversed array:
74 23 9 63 67 12 45

使用循环反转数组的 JavaScript 程序

下面是使用循环反转数组的 JavaScript 程序:

相关:归并排序算法简介

// JavaScript program to reverse the elements of an array using loops
function reverseArr(arr, size) {
for(let i=0, j=size-1; i<(size)/2; i++, j--) {
[arr[i], arr[j]] = [arr[j], arr[i]];
}
}
function printArrayElements(arr, size) {
for(let i=0; i<size; i++) {
document.write(arr[i] + " ");
}
document.write("<br>");
}
// Driver Code
var arr = [45, 12, 67, 63, 9, 23, 74];
var size = arr.length;
// Printing the original array
document.write("Original Array: " + "<br>");
printArrayElements(arr, size);
// Reversing the array
reverseArr(arr, size);
// Printing the reversed array
document.write("Reversed Array: " + "<br>");
printArrayElements(arr, size);

输出:

 Original Array:
45 12 67 63 9 23 74
Reversed array:
74 23 9 63 67 12 45

反转数组的递归方法

问题陈述

你得到一个数组arr 。您需要反转数组的元素,然后打印反转的数组。您需要使用递归来实现此解决方案。

示例 1 :让 arr = [45, 12, 67, 63, 9, 23, 74]

反向 arr = [74, 23, 9, 63, 67, 12, 45]

因此输出是 74 23 9 63 67 12 45。

示例 2 :让 arr = [1, 2, 3, 4, 5, 6, 7, 8]

反向 arr = [8, 7, 6, 5, 4, 3, 2, 1]

因此输出是 8 7 6 5 4 3 2 1。

使用递归反转数组的方法

您可以按照以下方法使用递归反转数组的元素:

  1. 初始化索引变量开始结束,使它们分别指向数组的第一个 (0) 和最后一个 (sizeOfArray – 1) 索引。
  2. 将索引开始处的元素与索引结束处的元素交换。
  3. 递归调用反向函数。在reverse函数的参数中, start的值加1, end的值减1。
  4. 起始变量的值大于或等于结束变量的值时停止递归。

使用递归反转数组的 C++ 程序

下面是使用递归反转数组的 C++ 程序:

 // C++ program to reverse an array using recursion
#include <iostream>
using namespace std;
void reverseArr(int arr[], int start, int end)
{
if (start >= end)
{
return;
}
swap(arr[start], arr[end]);
reverseArr(arr, start+1, end-1);
}
void printArrayElements(int arr[], int size)
{
for(int i=0; i<size; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
// Driver Code
int main()
{
int arr[] = {45, 12, 67, 63, 9, 23, 74};
int size = sizeof(arr)/sizeof(arr[0]);
// Printing the original array
cout << "Original Array: " << endl;
printArrayElements(arr, size);
// Reversing the array
reverseArr(arr, 0, size-1);
// Printing the reversed array
cout << "Reversed array: " << endl;
printArrayElements(arr, size);
return 0;
}

输出:

 Original Array:
45 12 67 63 9 23 74
Reversed array:
74 23 9 63 67 12 45

使用递归反转数组的 Python 程序

下面是使用递归反转数组的 Python 程序:

相关:动态规划:示例、常见问题和解决方案

# Python program to reverse an array using recursion
def reverseList(arr, start, end):
if start >= end:
return
arr[start], arr[end] = arr[end], arr[start]
reverseList(arr, start+1, end-1)
def printListElements(arr, size):
for i in range(size):
print(arr[i], end=" ")
print()
# Driver Code
arr = [45, 12, 67, 63, 9, 23, 74]
size = len(arr)
# Printing the original array
print("Original Array:")
printListElements(arr, size)
# Reversing the array
reverseList(arr, 0, size-1)
# Printing the reversed array
print("Reversed Array:")
printListElements(arr, size)

输出:

 Original Array:
45 12 67 63 9 23 74
Reversed array:
74 23 9 63 67 12 45

使用递归反转数组的 JavaScript 程序

下面是使用递归反转数组的 JavaScript 程序:

相关:如何使用递归求自然数之和

// JavaScript program to reverse an array using recursion
function reverseArr(arr, start, end)
{
if (start >= end)
{
return;
}
[arr[start], arr[end]] = [arr[end], arr[start]];
reverseArr(arr, start+1, end-1);
}
function printArrayElements(arr, size)
{
for(let i=0; i<size; i++)
{
document.write(arr[i] + " ");
}
document.write("<br>");
}
// Driver Code
var arr = [45, 12, 67, 63, 9, 23, 74];
let size = arr.length;
// Printing the original array
document.write("Original Array: " + "<br>");
printArrayElements(arr, size);
// Reversing the array
reverseArr(arr, 0, size-1);
// Printing the reversed array
document.write("Reversed Array: " + "<br>");
printArrayElements(arr, size);

输出:

 Original Array:
45 12 67 63 9 23 74
Reversed array:
74 23 9 63 67 12 45

使用递归解决问题

递归函数是调用自身的函数。在递归中,通过将问题分解为更小、更简单的版本来解决问题。

递归有很多优点:递归代码比迭代代码短,可以用来解决自然递归的问题,可以用于中缀、前缀、后缀求值,递归减少了编写所需的时间和调试代码等

递归是技术面试中面试官最喜欢的话题。您必须了解递归以及如何在编写代码时使用它才能成为最高效的程序员。