소개
이 랩에서는 C++ 로 버블 정렬 (bubble sort) 기법을 구현하는 알고리즘을 작성하는 방법을 배웁니다. 버블 정렬은 가장 널리 사용되고 간단한 정렬 기법 중 하나로, 배열에서 인접한 두 요소를 비교하고 올바르게 정렬되지 않은 경우 위치를 바꿉니다.
이 랩에서는 C++ 로 버블 정렬 (bubble sort) 기법을 구현하는 알고리즘을 작성하는 방법을 배웁니다. 버블 정렬은 가장 널리 사용되고 간단한 정렬 기법 중 하나로, 배열에서 인접한 두 요소를 비교하고 올바르게 정렬되지 않은 경우 위치를 바꿉니다.
다음 명령을 사용하여 ~/project 디렉토리에 main.cpp라는 새 파일을 생성합니다.
touch ~/project/main.cpp
먼저 프로그램에 필요한 변수와 헤더 파일을 선언합니다. 이 단계에서는 iostream 헤더 파일을 포함하고 std 네임스페이스를 정의합니다.
#include<iostream>
using namespace std;
여기서는 정렬할 배열과 배열의 크기를 인수로 받는 C++ 프로그램에서 "bubble_sort" 함수를 선언합니다. 이 함수는 for 루프, 스와핑 (swapping), if/else 문을 사용하여 버블 정렬 기법을 구현합니다.
int bubble_sort(int n,int array[]){
int temp;
for(int i=0;i<n-1;i++){
for(int j=0;j<n-i-1;j--){
if(array[j]>array[j+1]){
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
return 0;
}
최적화된 버블 정렬에서는 각 패스 (pass) 에서 요소가 스와핑 (swapped) 되었는지 여부를 확인합니다. 마지막 패스에서 스왑이 발생하지 않으면 배열이 정렬되었음을 의미합니다. 이 단계에서는 최적화된 버블 정렬 알고리즘을 구현하기 위해 "bubble_sort" 함수를 구현합니다. 이 함수는 정렬할 배열과 배열의 크기를 인수로 받습니다.
int bubble_sort(int n,int array[]){
int temp, flag;
for(int i=0;i<n-1;i++){
flag = 0;
for(int j=0;j<n-i-1;j++){
if(array[j]>array[j+1]){
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
flag=1;
}
}
if(flag==0){
break;
}
}
return 0;
}
여기서는 정렬할 배열과 크기를 선언할 main 함수를 정의합니다. 이 단계에서는 배열을 오름차순으로 정렬하기 위해 "bubble_sort" 함수를 호출합니다.
int main(){
int arr[]={5,6,9,2,3};
int n = sizeof(arr)/(sizeof(arr[0]));
bubble_sort(n,arr);
cout<<"Elements after sorting of the array:- "<<endl;
for(int i=0;i<n;i++){
cout<<arr[i]<<" ";
}
return 0;
}
이 단계에서는 Ubuntu 시스템의 터미널에서 코드를 컴파일하고 실행합니다. 코드를 컴파일하려면 다음 명령을 입력하십시오.
g++ ~/project/main.cpp -o main
코드를 실행하려면 다음 명령을 입력하십시오.
./main
이 랩에서는 C++ 에서 동적 배열을 사용하여 버블 정렬을 구현하는 방법을 성공적으로 배웠습니다. 또한 일부 선택된 효율적인 배열에 효과적으로 작동하는 최적화된 버블 정렬 기술에 대해서도 배웠습니다. 위의 튜토리얼을 따르면 C++ 에서 동적 배열을 사용하여 배열을 오름차순 또는 내림차순으로 정렬하는 버블 정렬 기술을 구현할 수 있습니다.