버블 소트 Bubble Sort
버블 소트는 인접한 2개의 레코드를 비교하여 검사하는 알고리즘으로
알고리즘을 처음 접하는 이에게,
교육용 알고리즘으로 접하기 좋다.
정렬 방법으로는 두 숫자를 비교하고,
큰 숫자를 오른쪽 혹은 왼쪽으로 스왑하며 정렬하는 알고리즘이다.
회전 수 만큼 검수하는 수가 차감되어,
결국에는 검수하는 정렬의 길이만큼 회전하여
속도의 문제에서는 실용적이지 못하다.
이하는 코드를 분석하며 더블 소트의 이해를 돕겠다.
< 예 시>
#include <stdio.h> int swap (int *a, int *b) // 주소값을 받아 포인터를 이용한 스왑함수이다. { int temp = *a; *a = *b; *b = temp; } void main() { int arr [10] = { 3, 5, 6, 8, 10, 1, 9, 2, 4, 5} int length = sizeof (arr) / sizeof (int); // 배열 전체의 사이즈와 배열의 자료형 사이즈를 나누어 배열의 길이를 구한다. for ( int i = 0; i < length - 1; i ++ ) { for ( int j = 0; < length - 1 - i ; j++ ) { if ( arr[ j + 1 ] < arr[ j ] ) { swap ( &arr [ j ] , &arr [ j + 1 ] ); // 주소값을 주어 포인터를 이용한 함수를 만들어 자리를 바꿔준다 } } } for ( int i = 0 ; i < 10; i ++ ) { printf( "%d", arr [ i ] ); } return 0; } |
'프로그래밍 언어 > C & C++ 정리' 카테고리의 다른 글
동적 할당 함수 (0) | 2023.01.07 |
---|---|
c++ 함수의 특질 (0) | 2023.01.07 |
함수 (0) | 2023.01.06 |
포인터 (0) | 2023.01.04 |
배열 (0) | 2023.01.04 |