Как обратить массив в C ++, Python и JavaScript
Массив – это набор элементов, хранящихся в непрерывных ячейках памяти. Обращение массива – одна из наиболее распространенных операций, выполняемых над массивом. В этой статье вы узнаете, как написать собственную реализацию обращения массива, используя итеративный и рекурсивный подходы.
Итерационный подход к обращению массива
Постановка задачи
Вам дан массив обр . Вам нужно перевернуть элементы массива, а затем распечатать перевернутый массив. Вам нужно реализовать это решение с помощью циклов.
Пример 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.
Подход к обращению массива с использованием циклов
Вы можете инвертировать элементы массива с помощью циклов, следуя приведенному ниже подходу:
- Инициализируйте индексные переменные «i» и «j» так, чтобы они указывали на первый (0) и последний (sizeOfArray – 1) индекс массива соответственно.
- В цикле поменяйте местами элемент с индексом i на элемент с индексом j.
- Увеличьте значение i на 1 и уменьшите значение j на 1.
- Выполняйте цикл до тех пор, пока я не <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
Программа 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
Рекурсивный подход к обращению массива
Постановка задачи
Вам дан массив обр . Вам нужно перевернуть элементы массива, а затем распечатать перевернутый массив. Вам необходимо реализовать это решение с помощью рекурсии.
Пример 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.
Подход к обращению массива с помощью рекурсии
Вы можете обратить элементы массива с помощью рекурсии, следуя приведенному ниже подходу:
- Инициализируйте индексные переменные start и end таким образом, чтобы они указывали на первый (0) и последний (sizeOfArray – 1) индекс массива соответственно.
- Поменяйте местами элемент в начале индекса с элементом в конце индекса.
- Рекурсивно вызвать обратную функцию. В параметрах обратной функции увеличьте значение start на 1 и уменьшите значение end на 1.
- Остановите рекурсию, когда значение начальной переменной больше или равно значению конечной переменной.
Программа 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
Используйте рекурсию для решения проблем
Рекурсивная функция – это функция, которая вызывает сама себя. В рекурсии проблема решается путем разбиения проблем на более мелкие и простые версии самих себя.
У рекурсии много преимуществ: рекурсивный код короче итеративного кода, его можно использовать для решения естественно рекурсивных проблем, его можно использовать в инфиксных, префиксных, постфиксных оценках, рекурсия сокращает время, необходимое для записи и код отладки и т. д.
Рекурсия – любимая тема интервьюеров на технических собеседованиях. Вы должны знать о рекурсии и о том, как ее использовать при написании кода, чтобы стать наиболее эффективным программистом.