소개
이 랩에서는 C++ 에서 선택 정렬 알고리즘을 사용하여 정렬되지 않은 동적 배열을 정렬하는 선택 정렬 (selection sort) 을 수행하는 방법을 배우게 됩니다.
이 랩에서는 C++ 에서 선택 정렬 알고리즘을 사용하여 정렬되지 않은 동적 배열을 정렬하는 선택 정렬 (selection sort) 을 수행하는 방법을 배우게 됩니다.
먼저, ~/project 디렉토리에 main.cpp라는 이름의 새로운 C++ 파일을 생성합니다.
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;
}
// 최소값을 올바른 위치에 배치
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++ 에서 정렬되지 않은 동적 배열을 정렬하기 위해 선택 정렬 알고리즘을 사용하는 방법을 배웠습니다. 이를 위해 배열을 입력하고, 선택 정렬 알고리즘을 구현하고, 정렬을 수행하고, 정렬된 배열을 출력한 다음, 터미널에서 코드를 컴파일하고 실행해야 했습니다. 이러한 기술을 통해 선택 정렬을 사용하여 모든 크기의 배열을 정렬할 수 있습니다.