병합정렬에서 질문이 있습니다.
141
12 asked
안녕하세요. 감자님.
병합정렬을 복습하던 도중에 질문이 있어 이렇게 글을 남기게 되었습니다. 좋은 강의 제공해주셔서 너무 감사합니다.
코드를 보면 tempArr.length와 tempArr.fill()을 통해 tempArr의 모든 값을 0으로 미리 채워두셨는데 이 이유가 혹시 Merge()가 각 재귀에서 불릴 때마다 특정 인덱스만 사용하기 때문인가요? 혹시 모르는 IndexOutOfBound나 쓰레기 값에 접근하는 것을 미리 방지하고자 그렇게 설정하신 건지 궁금합니다.
1번 질문에서 연계되는 부분인데 보통 자바스크립트의 배열이나 파이썬의 리스트 같은 경우 배열의 끝에 값을 쉽게 추가할 수 있도록 자체 내장함수를 제공하는 것으로 알고 있습니다. 물론 강의 초반에 자바스크립트의 독특한 메서드를 사용하지는 않는다고 하셨는데 만약에 사용한다면(arr.push(), list.append() 같은 함수) tempArr는 Merge 함수가 불릴 때마다 초기화 되므로 arr에 값을 복사할 때 인덱스 보정이 필요한 지 여쭙고 싶습니다.
Answer 1
0
안녕하세요 이지민님!
병합 정렬의 Merge 함수를 보시다가 궁금증이 생기셨군요.
하나씩 답변드리겠습니다!🫡
tempArr는 정렬되지 않은 두 배열을 합친 크기의 배열로 만들며 스택 내 지역변수로 만들어 집니다. 자바스크립트에서 초기화 하지 않은 배열은 undefined값이 저장되기때문에 의도적으로 배열크기만큼 순회하며 0으로 초기화 해줬습니다. 물론 0으로 초기화 하지 않아도 똑같이 동작하겠지만, 저의 코딩 습관으로 이렇게 작성했습니다.😁
Merge함수가 호출될 때마다 tempArr는 스택에 새롭게 생성되기 때문에 이전 실행에 영향을 받지않습니다. push나 append함수로도 원하는 크기로 만들 수 있겠지만, Merge함수 실행 시 배열의 크기를 이미 알 수 있기 때문에 length로 배열을 처음부터 설정해주는 것이 더 좋다고 생각이 들기 때문에 자바스크립트에서도 배열을 이미 만들어 추가하는게 더 좋을 것 같습니다.
궁금증이 해결되셨나요?😄
0
음... 제가 이해한 부분이 맞는 지 모르겠는데 확인 부탁드립니다.
tempArr의 시작 인덱스가 leftIndex부터이고 강의의 코드에서 소개한 코드는 배열의 초기 세팅을 맞춰놓은 상태에서 해당 인덱스에 값을 덮어쓰는 방식이고 push, append() 같은 배열의 끝에 추가하는 내장함수는 인덱스에 값을 덮어쓰는 것이 아니라 끝에 값을 추가하기 때문에 나중에 arr에 값을 옮길 때 인덱스 보정이 반드시 필요하다.
정도로 이해했습니다. 말을 너무 어렵게 적은 것 같은데... 답변 부탁드립니다!
0
이해하고 있으신게 맞습니다.
push나 append를 이용하면 arr에 들어갈 인덱스가 맞지 않아서 tempArr값을 arr로 옮길 때 따로 계산을 해서 적절한 arr값을 찾아줘야 합니다.
이 작업이 없다면 배열 접근시 IndexOutOfBound가 발생하고 undefined된 값을 가지기 때문에 정렬이 올바르게 되지 않을 겁니다.😄
큐의 마지막 데이터가 head에 위치해야 하는 이유가 궁금합니다.
0
71
2
이중연결 리스트 데이터 삭제시 질문이 있습니다.
1
61
2
자바스크립트 배열은 동적이 아닌가요?
1
85
2
자바스크립트 배열
0
75
2
코테에서 링크리스트 자료구조를 사용해야 하면, 이번 강의에서 구현한 메서드들도 모두 직접 구현하면 되나요?/
0
150
2
공부 방식 질문 드립니다.
1
115
2
메모이제이션과 타뷸레이션 관련해서 질문드립니다.
1
166
2
병합정렬 질문 있습니다.
1
136
5
데이터 삽입, 삭제 함수 오류 범위 설정
0
156
2
해시 테이블에서 질문이 잇습니다.
2
127
2
시간복잡도 계산 시 1회 연산당 연산량은 왜 고려하지 않는 건가요?
1
147
2
터미널 설정
0
113
2
2:13분 관련 질문입니다
0
89
1
8:47초경부터 9:00초까지 질문입니다.
1
133
2
tail을 삭제하는 경우에 관련해서 질문이 있습니다.
0
106
1
2:36초 head 위치가?
1
109
2
환경구축강의 중 터미널 파일 실행오류
0
160
2
4:58 이중for문 질문있습니다.
0
103
1
hanoi함수 처음 호출에 대해서 여쭤봅니다.
1
129
2
해쉬테이블 데이터 관련해서 질문있습니다.
0
147
2
자바스크립트 Map과 어떤 차이가 있나요??
0
202
2
질문이있습니다.
0
102
1
2번째 복습 스터디📖 를 진행하고 스터디원분들과 나눈 질문들 입니다.(자료구조와 알고리즘)
1
146
2
3:54 질문 clear() 함수
1
78
1

