기본 콘텐츠로 건너뛰기

라벨이 Sort인 게시물 표시

(Python) Merge sorting algorithm의 구현

이번에는 Python으로 Merge sorting을 구현해봤습니다. 수업 과제라서... ㅋㅋㅋ 알고리즘은 인터넷에 이미 많이 올라와있으니까 알고리즘은 아래의 사이트에서 읽어보시면 됩니다!! (알고리즘이 최적화가 되어있지 않고 variable convention이 안 맞는게 꽤 많습니다 ㅠ, .. 걸러 읽어주세요!!!) https://www.geeksforgeeks.org/merge-sort/ ---- 사상은 우선 최소 단위인 2개까지 쪼개가지고 아래와 같이 왼쪽/오른쪽에 Handle을 배치해서 크거나 작은 순으로 데이터를 땡기고 핸들을 좌/우에서 밀어가지고 핸들이 끝까지 가면 반대쪽 데이터를 끝까지 append하는 거에요. 알고리즘이 너무 간단해서 설명이 엄청 짧네요! 크게 파트는 두 개로 나눌건데, 1. 입력을 받은 후 처리되는 배열을 정하고, 핸들 배치한 뒤에 비교하는 알고리즘을 호출하는 부분과, 2. 위에서 입력받은 데이터를 비교해서 데이터를 처리하고 정리된 데이터를 리턴하는 부분을 만들어보려고 합니다. ----- 1. 여기서부터는 입력을 받은 후 처리되는 배열을 정하고 핸들 배치, Merge sort를 호출하는 부분입니다. 1) 먼저 List의 길이를 확인합니다. (MainCount_input) 위의 알고리즘을 보면 Merge sorting 하는 Array의 size가 2배씩 커지는데, (MainMultiIndex)에서 1부터 2씩 곱해가다보면 소팅하려고 투입하는 배열 사이즈가 원본 List보다 커지겠죠! 그 때 종료 시켜버리면 되겠죠! 2),3) MainIndex는 Sorting 시작할 부분을 지정해주는 거에요, 그러니까 아래와 같은 순서로 처리가 될 거에요. (종료호출이 왜 있는지는 아래에다가 달아놓으려고 합니다!) (2개 정렬) 정렬범위 : 0~1 / 종료호출 : 2 정렬범위 : 2~3 / 종료호출 : 4 정렬범위 : 4~5 / 종료호출 : 6 .. 2개 정렬...