이번에는 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개 정렬...
정보기술 개발실 AI 시대 기술 개발 개시