
안녕하세요 :-) 이번 포스팅에서 다루어볼 것은 선택정렬과 마찬가지로 시간복잡도 O(N^2)을 갖는 버블정렬 알고리즘입니다. 선택정렬 알고리즘의 경우 가장작은값을 찾아 기억할 변수 min값이 필요했었지만 버블정렬에서는 따로 필요하지 않습니다. 왜냐하면 버블정렬의 아이디어는 바로 원소 자신의 양옆의 인덱스와 비교하여 더 작은값을 앞으로 보내는 것이기 때문입니다. 선택정렬 알고리즘의 경우 조건 검사 범위를 앞에서 부터 제외했었습니다. 제외된 원소들은 이미 정렬이 완료되었다 간주했기 때문입니다. 하지만 버블정렬의 경우 뒤에있는 인덱스를 순서대로 제외하며 정렬을 수행합니다. 정렬 절차 1. 맨앞 인덱스의 원소 부터 자신과 오른쪽의 값을 비교하여 오른쪽이 더 크다면 자신과 위치를 바꿉니다. 2. 배열 전체를 조건..

안녕하세요 :-) 이번 포스팅은 선택정렬 알고리즘에 대해 다루어보겠습니다. 정렬 알고리즘은 여러가지가 존재 하지만 각각의 효율성과 구현 난이도에서 차이가 드러납니다. 선택정렬 알고리즘의 경우 O(n^2)의 시간복잡도를 갖는 처리 속도가 비교적 좋은 알고리즘은 아니지만 정렬의 매커니즘을 이해하기 편하고 그만큼 구현이 쉽기때문에 가장 먼저 다루어볼 알고리즘입니다. 정렬할 타겟배열 내에서 가장 작은 값을 선택하여 가장 앞으로 보내는 아이디어를 이용하는 알고리즘으로 디버깅 과정은 아래와 같습니다. 정렬 절차 1. 전체배열을 조건검사하여 가장 작은 값을 첫번째 인덱스와 스위치 시킵니다. 2. 첫번째 인덱스를 제외한 나머지 배열을 조건검사하여 가장 작은 값을 두번째 인덱스와 스위치 시킵니다. 3. 첫번째와 두번째 ..

Algorithm - intro 안녕하세요 : ) shiny ocean입니다. 3학년 2학기를 맞이하며 새롭게 다루어볼 전공 과목중 "블로그에 포스팅을 통해 기록을 남겨야겠다!!" 고 결심한 것은 데이터베이스와 알고리즘 두 과목이었습니다. 이번 카테고리는 그중 알고리즘에 대한 내용을 다루어 보겠습니다. 들어가기전에 잡담을 먼저 해보겠습니다. 시작하자 마자 정렬의 종류는 퀵, 선택, 병합 어쩌구 시간복잡도는 저쩌구 하면 거부감만 들거 같습니다 하지만 유감스럽게도 다음 포스팅부터는 그렇게 할것입니다... 어쨋든 이번 포스팅에서 해볼 이야기는 "알고리즘이 무엇일까"에 대해 초점을 맞춰 보겠습니다. 알고리즘? 제가 저 단어를 처음 접해본것은 알파고와 이세돌9단의 바둑경기가 이슈였을때 입니다. 제가 고등학교 3학..