-
[알고리즘] 2차원 버블 정렬(Bubble sort)프로그래밍/알고리즘 2019. 10. 22. 23:36
List
1. 1차원 버블정렬을 이해한다.
2. 주어진 변수를 통해 2차원 버블정렬을 만든다.2차원 버블정렬(Bubble sort)
버블정렬을 간단하게 설명하자면 오름차순 기준으로 오른쪽에 있는 값과 비교하여 큰값을 오른쪽 끝으로 보내는 과정을 N번 반복하는 것입니다. 1차원 설계는 링크를 통해 들어가시면 확인하실 수 있습니다. 지금부터 2차원 버블정렬을 설계 해봅시다.
2019/03/27 - [프로그래밍/알고리즘] - [알고리즘] 버블정렬(Bubble sort)
첫번째, 행이 넘어가는 순간에 비교
버블정렬은 바로 옆에있는 인덱스와 값을 비교합니다. 하지만 2차원은 행이 다른 경우
옆에 있는 인덱스와 비교할 수 없습니다.
버블정렬의 특성상 한 행의 정렬이 끝나면 가장 큰값이 마지막 열로 이동하기 때문에
첫행의 마지막 열과 다음행의 첫번째 열을 비교해주면 됩니다.
두번째, 1차원과 마찬가지로 행,열 값을 하나씩 줄이면서 배열의 수 만큼 반복합니다.
세번째, 배열의 첫번째 값이 최소값이 될때까지 반복하도록 반복문을 넣어줍니다.
<코드>
#include<stdio.h> // bubble sort int main() { int sort[5][5] = { {5,4,20,21,22},{25,18,17,16,9}, {8,23,19,6,2},{15,11,13,12,3},{1,24,14,7,10} }; int tmp1; int i, j, x, y; printf("The aligned values are: \n"); while (sort[0][0] != 1) { x = 0; y = 0; while (x < 5) { while (y < 4) { if (y == 0 && x != 0) { //이전행의 마지막 값 과 현재행의 첫번째 값을 비교 if (sort[x][y] < sort[x - 1][4]) { tmp1 = sort[x][y]; sort[x][y] = sort[x - 1][4]; sort[x - 1][4] = tmp1; } } //일차원 버블정렬 if (sort[x][y] > sort[x][y + 1]) { tmp1 = sort[x][y]; sort[x][y] = sort[x][y + 1]; sort[x][y + 1] = tmp1; } y++; // 다음열 if (y == 4) { x++; // 다음행 } } y = 0; } } for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { printf("%d ",sort[i][j]); } printf("\n"); } return 0; }
'프로그래밍 > 알고리즘' 카테고리의 다른 글
TestDome 에서 코딩테스트를 ??? (6) 2020.07.13 [알고리즘] 동적 계획법(Dynamic Programming) (0) 2019.06.07 [알고리즘] 집합 찾기(Union Find) (0) 2019.06.05 [알고리즘] 탐욕적 기법(Greedy Algorithm) (0) 2019.05.29 [알고리즘] 너비 우선 탐색(BFS, Breadth-First Search) (0) 2019.05.26