[C 기초 - 버블 정렬]
버블 정렬
정렬에는 버블 정렬, 삽입 정렬, 힙 정렬, 퀵 정렬 등 여러가지가 있는데, 버블 정렬이란 가장 간단한 정렬 알고리즘으로, 서로 이웃한 값들을 비교하여 큰 값을 뒤로 넘기며 정렬합니다.
int arr[5] = {14, 12, 1, 5, 10}
위와 같은 배열에 버블 정렬을 적용시켜보자.
- arr[0]과 arr[1]의 값을 비교한다. (14와 12의 값을 비교)
- arr[0]이 arr[1]보다 더 크므로 arr[0]과 arr[1]을 바꾼다.
- 배열의 상태: {12, 14, 1, 5, 10}
- 다음은 arr[1]과 arr[2]를 비교. (14와 1을 비교)
- arr[1]이 arr[2]보다 더 크므로 arr[1]과 arr[2]를 바꾼다.
- 배열의 상태: { 12, 1, 14, 5, 10 }
- 위 과정을 쭈욱 반복하면 배열의 상태는 다음과 같이 된다.
- 배열의 상태: { 12, 1, 5, 10, 14 }
- 처음으로 돌아와 계속해서 정렬을 반복
- 최종적으로 배열은 다음과 같이 정렬
- 배열의 상태: { 1, 5, 10, 12, 14 }
버블 정렬은 이처럼 인접한 두 값을 비교해나가면서 큰 수를 계속해서 뒤로 보내는 방법이다.
변수 선언하기
#include <stdio.h>
int main()
{
int arr[10] = { 9, 17, 5, 6, 124, 112, 1, 3, 87, 55 };
int temp; // 두 값을 바꿀 때 사용할 변수
int length = sizeof(arr) / sizeof(int);
printf("정렬 전 : ");
for(int i = 0; i < length; i++)
{
printf("%d ", arr[i]);
}
for(int i = 0; i < length - 1; i++)
{
for(int j = 0; j < length -1 -i; j++)
{
if(arr[j + 1] < arr[j])
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
printf("\n정렬 후 : ");
for(int i = 0; i < length; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
Author And Source
이 문제에 관하여([C 기초 - 버블 정렬]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@fredkeemhaus/C-기초-버블-정렬저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)