정렬 4

[삽잡이::알고리즘] 정렬(선택, 버블, 삽입, 병합) 간단 요약

정렬(선택, 버블, 삽입, 병합)들을 다시 한번 정리해봐야 하는 일이 생겼습니다. 그래서 예전에 정리해두었던 글들을 보고 있는데... 좀 어렵다.... 하.... 물론 코드로 되어있고,기존 방식들과 좀 다르게 구현된 것들도 있어서 그렇겠지만... 우선은 각 정렬들에 대한 정의 이해가 부족한 상태로다시 코드를 봐서 그런것이라는 결론을 내리게 되었습니다! 기사79에서 잘 나온 그림이 있어서 참고하여 올립니다.(문제시 삭제하도록 하겠습니다.) 우선, 선택 정렬에 대한 진행도 입니다. 다음으로 버블 정렬에 대한 진행도입니다. 그리고 삽입 정렬에 대한 진행도입니다. 마지막으로 병합 정렬에 대한 진행도 입니다.A, B 배열을 비교해가며 하나로 합칠 수 있지요. 이렇게 정렬되어지는 과정에 대한 도식화를 이해하게 된다..

#012_자료구조와 알고리즘_병합 정렬(Merge Sort)

안녕하세요 삽잡이입니다. 이번시간에는 병합 정렬에 대해서 알아보려고 합니다.병합정렬은 분할 정복 방식에 기반으로 한 정렬 알고리즘입니다.분할 정복? 많이 들어보시지 않았습니까? 맞습니다... 퀵정렬에 대해서 알아볼 때 언급된 내용입니다. 기억이 나시죠? 하하하... 분할 정복이 기억이 안나시는 분들을 위해 간략하게 설명을 드리자면,커다란 문제를 잘게 나눠서 작은 문제를 극복하는 것이죠...작은 문제를 해결함으로 나온 값들을 합쳐 결국 큰 문제를 해결하는 것이 분할 정복 방식의 핵심이라고 생각합니다. 병합 정렬은 분할 정복 방식을 기반으로 한다고 했습니다.다른 정렬들과 다르게 병합 정렬은 기존 데이터가 담겨있는 배열 이외에 추가적으로 또 다른 배일이 필요합니다. 이에 병합 정렬은 외부 정렬에 속하기도 합니..

#003_자료구조와 알고리즘_누구보다 빠르게 Quick 정렬

안녕하세요 삽잡이 입니다. 이번시간에는 '누구보다 빠르게 난 남들과는 다르게' ...이름 그대로 빠른, Quick Sort (퀵 정렬)에 대해서 알아보려고 합니다. 얼마나 빠르길래.... 하하...퀵 정렬을 이해하기 위해서는 우선, 알고리즘의 설계 방법들에 대해서 알아볼 필요가 있습니다. 알고리즘을 설계하는 방법은 여러가지가 있습니다.예를 들어 볼까요? 이전 시간에 본 삽입 정렬을 보도록 해봅시다. "i 장의 카드를 삽잡이는 손에 쥐고 있습니다.이때 한 장의 순서가 눈에 거슬리는 삽잡이는 그 카드 한 장을 뺀 나머지 i-1장들 사이에 비교를 통해 적절한 위치에 삽입을 하게 되죠."이와 같이 '점진적'인 방법을 삽입 정렬에서는 사용하고 있습니다... 설계하는 방법이 한가지는 아니겠죠 하하...그러다면, 이..

#003_자료구조와 알고리즘_삽입 정렬

안녕하세요 삽잡이입니다. 이번 시간에는 지난 시간, 버블 정렬과 선택 정렬에 이은 삽입 정렬에 대해서 알아보려고 합니다. 삽입 정렬은 배열의 부분 배열을 정렬 시켜 나가는 정렬 방식입니다. 예를 들어보도록 하겠습니다. 삽잡이가 '원카드' 게임을 한다고 가정해보죠... 해당 게임에 사용하는 카드는 다이아, 하트, 스페이드, 클로버 모양과 각각 순서에 맞는 카드를 제공해줍니다.카드를 뒤섞어 놓고 상대와 본인은 한장씩 뒤집힌 카드를 가져갑니다. 왼손에 한장씩 카드를 가져오는데 평소 조그마한 정리 조차 하지 않으면 미칠듯이 불안감에 빠지는 삽잡이는한장, 한장 카드를 집어 왼손으로 가져올 때마다카드를 순서대로 정리합니다...그리고 정해진 수의 카드를 가져갔다면, 이제 게임은 시작 됩니다. 이게 삽입 정렬입니다. ..