반응형
가장 간단한 정렬 알고리즘중 하나인 버블 정렬(버블 소트)를 c++로 구현해 보았다.
이 정렬의 시간복잡도는 for문이 두개 중첩되어 있기 때문에 O(n^2)이다.
#include<iostream> #define SIZE 50 //배열 크기 매크로 상수 #include <time.h> using namespace std; void swap(int*a, int*b)//temp 임시 변수가 필요없는 swap함수 { *a = *b-*a; *b = *b - *a; *a =*a + *b; } void bubblesort(int* arr,int N) //오름차순 버블정렬 { for (int i = N;i > 0;i--) //N-1번원소부터 0번원소까지 정렬 { for (int j = 1;j < i;j++) { if (arr[j] < arr[j - 1]) //뒤의원소가 앞의 원소보다 작으면 swap(&arr[j], &arr[j - 1]); //둘을 바꾼다 //반복해서 원소를 교환하여 i-1번에 해당하는 원소를 위치시킴 } //i-1번째 원소 정렬됨 } } void main() { srand(time(NULL)); int arr[SIZE]; //랜덤배열 생성 for (int j = 0;j < SIZE;j++) arr[j] = rand() % 999 + 1; //버블소트 실행 전 배열 출력 for (int i = 0;i < SIZE;i++) cout << arr[i] << " "; bubblesort(arr, SIZE); cout << endl << endl; //버블소트 실행 수 배열 출력 bubblesort(arr, SIZE); for (int i = 0;i < SIZE;i++) cout << arr[i] << " "; }
실행결과 :
반응형