7/21/2015

Wrong merge sort

오늘 기술면접 때 쓴 Wrong merge sort.
주어진 과제는 def mergeSort(alist, blist): 를 완성하는 것. 내가 구현한건 merge sort가 아니였다!
nested for 문으로 시작했다가 아닌거 같아서 이런 식으로 작성하다 Timeout...
갑자기 Python 문법을 까먹었다 라 쓰고 공부하지 않는다로 읽는다
For statement에 ()를 써버려서 급하게 자바로 아래와 같은 로직의 코드를 짰다

다시 merge sort 만들면서 깨달은 것
  1. for statement에는 ()가 필요치 않다
  2. list add 기능은 append() 를 사용
  3. ++가 없다. +=1 을 사용
  4. random.shuffle은 return하지 않고 parameter를 섞음
  5. sorted는 new list를 return
  6. list copy는 alist[:]로 copy module 사용안하고 심플하게 가능


Updated


테스트 코드 포함! merge sort 코드는 여기를 참고



Outdated


아래의 코드에서 사용했던 예제에서 동작하지만, 실제로는 범위 검사를 먼저 안하면 비교에서 out of index error가 발생한다.
반복문을 줄이려면 이렇게하면 되겠지. 하지만 심플하게 나누는게 초기 접근에는 이와 같은 인덱스 문제를 줄일거 같다. 아무생각 없이 같은 로직이라고 축약했더니 이런 문제가.
더 큰 문제는 이게 merge sort가 아니라는거!



Outdated


리스트 한쪽이 먼저 끝났을 때의 처리 - out of index 문제 내포

나름 한다고 생각했었는데.. 기초가 너무 부족하다. 평소에도 계속 코딩을 해야된다는 생각을 하게되었다.