Введение
В этом лабе вы научитесь выполнять сортировку выбором для сортировки неотсортированного динамического массива на C++ с использованием алгоритма сортировки выбором.
💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал
В этом лабе вы научитесь выполнять сортировку выбором для сортировки неотсортированного динамического массива на C++ с использованием алгоритма сортировки выбором.
Сначала создайте новый файл на C++, названный main.cpp
, в директории ~/project
.
touch ~/project/main.cpp
Алгоритм сортировки выбором работает путём выбора минимального элемента и размещения его в начале массива, затем выбора следующего минимального элемента из оставшейся части массива и размещения его по индексу 1, и так далее, пока массив не будет полностью отсортирован. Вот, как реализовать алгоритм сортировки выбором на C++:
#include <iostream>
using namespace std;
// функция для обмена позиций двух элементов
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
// функция для выполнения алгоритма сортировки выбором
void selectionSort(int array[], int size) {
for (int step = 0; step < size - 1; step++) {
int min_idx = step;
for (int i = step + 1; i < size; i++) {
// Для сортировки по убыванию измените > на < в этой строке.
// Выбирайте минимальный элемент на каждой итерации.
if (array[i] < array[min_idx])
min_idx = i;
}
// поместите min в правильную позицию
swap(&array[min_idx], &array[step]);
}
}
В этом блоке кода мы определяем функцию swap()
для обмена позиций двух элементов в массиве и функцию selectionSort()
для выполнения алгоритма сортировки выбором на массиве.
В этом шаге вы будете вводить динамический массив, который требуется отсортировать. Вы можете сделать это, предложив пользователю ввести элементы массива по одному:
// driver code
int main() {
int size;
cout<<"Enter the size of the array: ";
cin>>size; //input the size of array
int* data = new int[size]; //Dynamically declare array
// Input the elements of the array one by one
for(int i = 0; i < size; i++) {
cout<<"Enter element "<<i+1<<" : ";
cin>>data[i];
}
Теперь, когда у нас есть неотсортированный массив, мы можем выполнить алгоритм сортировки выбором на нем с использованием функции selectionSort()
, которую мы определили ранее. Вот, как это сделать:
// Perform selection sort
selectionSort(data, size);
Наконец, мы выведем отсортированный массив в консоль с использованием цикла в функции printArray()
. Вот, как это сделать:
// Output the sorted array
cout << "\nSorted array: ";
for (int i = 0; i < size; i++)
cout << data[i] << " ";
// Free memory used by the dynamic array
delete[] data;
return 0;
}
Для компиляции и запуска кода откройте терминал и перейдите в папку, где хранится ваш файл main.cpp
. Затем выполните следующие команды:
g++ main.cpp -o main
./main
Отсортированный массив должен быть отображен в консоли.
В этом практическом занятии вы узнали, как использовать алгоритм сортировки выбором для сортировки неотсортированного динамического массива на C++. Для этого вам пришлось ввести массив, реализовать алгоритм сортировки выбором, выполнить сортировку, вывести отсортированный массив и затем скомпилировать и запустить код в терминале. С этими навыками вы сможете сортировать массивы любого размера с использованием сортировки выбором.