Разворот массива за O

C++C++Beginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии вы научитесь обращать массив в языке программирования C++ с использованием различных методов. Обращение массива означает изменение порядка элементов массива так, чтобы последний элемент стал первым, а первый - последним. В этом практическом занятии вы узнаете, как выполнить обращение массива с использованием различных методов, включая циклы for, встроенные функции, указатели, рекурсию и пользовательские функции.

Создайте новый файл на C++

Создайте новый файл на C++, названный reverse_array.cpp, в директории ~/project, выполнив следующую команду:

touch ~/project/reverse_array.cpp

Обращение массива с использованием цикла for

Следующий код демонстрирует, как обращать массив с использованием цикла for:

#include <iostream>
using namespace std;
void reverseArray(int arr[], int size){
    for(int i=0;i<size/2;i++){
        int temp = arr[i];
        arr[i] = arr[size-i-1];
        arr[size-i-1] = temp;
    }
}
int main(){
    int arr[]={1,2,3,4,5};
    int size = sizeof(arr)/sizeof(arr[0]);
    cout<<"Original Array: ";
    for(int i=0;i<size;i++)
        cout<<arr[i]<<" ";
    cout<<endl;
    reverseArray(arr,size);
    cout<<"Reversed Array: ";
    for(int i=0;i<size;i++)
        cout<<arr[i]<<" ";
    cout<<endl;
    return 0;
}

Для компиляции и запуска кода используйте следующие команды:

g++ reverse_array.cpp -o reverse_array
./reverse_array

Обращение массива с использованием встроенной функции

Следующий код демонстрирует, как обращать массив с использованием встроенной функции C++:

#include <iostream>
#include <algorithm>
using namespace std;
int main(){
    int arr[]={1,2,3,4,5};
    int size = sizeof(arr)/sizeof(arr[0]);
    cout<<"Original Array: ";
    for(int i=0;i<size;i++)
        cout<<arr[i]<<" ";
    cout<<endl;
    reverse(arr,arr+size);
    cout<<"Reversed Array: ";
    for(int i=0;i<size;i++)
        cout<<arr[i]<<" ";
    cout<<endl;
    return 0;
}

Для компиляции и запуска кода используйте следующие команды:

g++ reverse_array.cpp -o reverse_array
./reverse_array

Обращение массива с использованием пользовательской функции

Следующий код демонстрирует, как определить пользовательскую функцию для обращения массива:

#include <iostream>
using namespace std;
void reverseArray(int arr[], int size){
    for(int i=0;i<size/2;i++){
        int temp = arr[i];
        arr[i] = arr[size-i-1];
        arr[size-i-1] = temp;
    }
}
int main(){
    int arr[]={1,2,3,4,5};
    int size = sizeof(arr)/sizeof(arr[0]);
    cout<<"Original Array: ";
    for(int i=0;i<size;i++)
        cout<<arr[i]<<" ";
    cout<<endl;
    reverseArray(arr,size);
    cout<<"Reversed Array: ";
    for(int i=0;i<size;i++)
        cout<<arr[i]<<" ";
    cout<<endl;
    return 0;
}

Для компиляции и запуска кода используйте следующие команды:

g++ reverse_array.cpp -o reverse_array
./reverse_array

Обращение массива с использованием указателей

Следующий код демонстрирует, как обращать массив с использованием указателей:

#include <iostream>
using namespace std;
void reverseArray(int *arr, int size){
    int *first = arr, *last = arr + size - 1;
    while(first < last){
        int temp = *first;
        *first = *last;
        *last = temp;
        first++;
        last--;
    }
}
int main(){
   int arr[] = {1, 2, 3, 4, 5};
   int size = sizeof(arr)/sizeof(arr[0]);
   cout<<"Original Array: ";
    for(int i=0;i<size;i++)
        cout<<arr[i]<<" ";
    cout<<endl;
   reverseArray(arr, size);
   cout<<"Reversed Array: ";
    for(int i=0;i<size;i++)
        cout<<arr[i]<<" ";
    cout<<endl;
   return 0;
}

Для компиляции и запуска кода используйте следующие команды:

g++ reverse_array.cpp -o reverse_array
./reverse_array

Обращение массива с использованием рекурсии

Следующий код демонстрирует, как обращать массив с использованием рекурсии:

#include <iostream>
using namespace std;
void reverseArray(int arr[], int start, int end){
    if(start >= end)
        return;
    int temp = arr[start];
    arr[start] = arr[end];
    arr[end] = temp;
    reverseArray(arr,start+1,end-1);
}
int main(){
   int arr[] = {1, 2, 3, 4, 5};
   int size = sizeof(arr)/sizeof(arr[0]);
   cout<<"Original Array: ";
    for(int i=0;i<size;i++)
        cout<<arr[i]<<" ";
    cout<<endl;
   reverseArray(arr,0,size-1);
   cout<<"Reversed Array: ";
    for(int i=0;i<size;i++)
        cout<<arr[i]<<" ";
    cout<<endl;
   return 0;
}

Для компиляции и запуска кода используйте следующие команды:

g++ reverse_array.cpp -o reverse_array
./reverse_array

Резюме

Поздравляем! Вы завершили лабораторную работу "Обращение массива за O(n)". Вы можете практиковаться в более лабораторных работах в LabEx, чтобы улучшить свои навыки.