Insert_data에서 prev_tmp를 지웠을 때, 성능향을 기대할 수 있을까요?
205
6 asked
제 생각으로는 성능 향상이 거의 없다고 생각이 되는데, 궁금합니다!
1 . 트리의 특성 상, Insert 내의 While() 1번은 사실 상 2^n개의 데이터를 순회하는 효과니까 데이터가 정말 많아도 100번 이하로 돌 것 같습니다.
2. 대입문 1개는 지우는건 어셈블리 1줄을 지우는 거니까, 100줄 정도의 어셈이 사라지는 것인데, 이게 큰 성능향상인지 궁금합니다!
Answer 1
1
안녕하세요.
tree 의 insert_data 함수의 개선 과정을 문의 하신 것 같습니다.
해당 소스를 보면
if( root == 0 )
{
root = temp;
return;
}
while(p)
{
prev = p;
if( p->data > data )
p=p->left;
else if( p->data < data )
p=p->right;
else
return;
}
if( prev->data > data )
prev->left = temp;
else
prev->right = temp;위 부분이 아래와 같이 바뀐 것이므로
while(*p)
{
if( (*p)->data > data )
p=&(*p)->left;
else if( (*p)->data < data )
p=&(*p)->right;
else
return;
}
*p = temp;while 루프 안의
prev = p 가 사라진 것과
while 아래 쪽의 if ~ else 구문이 사라진 것이 주요 합니다.
while 루프 안의 코드 삭제는 log N 번 이라 하더라도 데이터가 많은 경우 성능 향상을 기대할 수 있습니다.
또한 While 아래쪽의 if ~ else 또한 while 안쪽은 아니지만 insert_data 함수가 여러 번 호출 되었을 때 성능상 이점이 되리라 생각 됩니다.
재귀 관련
0
9
1
다음 강의는 언제 올려주시는지요?
0
11
0
replit에서 developer frameworks가 안보여요
0
17
2
20년 4,5회 13번
0
18
1
연결리스트 삽입삭제 O(1) 아닌가요?
0
18
2
코딩 테스트 All-in-One(Java)' 강의 노션 교재 권한문의
0
20
1
태어난김에 세계일주 시간 초과
0
22
1
커리큘럼 중 정렬 관련 질문
0
20
1
코테 사이트 로그인 불가
0
27
1
실습 권한이 없네요··· 이건 ··· 좀··· 401 에러떠요
0
29
3
백준 사이트 서버종료
1
26
0
[할인쿠폰] 코테의 바이블[JAVA] 50% 할인 쿠폰 관련
0
26
1
수강평 이벤트
0
34
2
안녕하세요. 계속 프로젝트를 해야지 하다가 결제하고 환경 설정 중입니다.
0
22
1
Export template 안됨
1
45
2
part8 Notion 링크
0
30
1
scanf("%d\n") 의미
0
28
1
필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)
0
49
2
26년 1회 실기 해설 강의
0
66
2
잠겨버린 사물함 시간초과 관련 질문입니다.
0
30
1
vi 명령어
0
46
1
tail노드의 이유 & 메모리 풀링 관련
0
325
2
커널 버전
0
251
1
메모리 풀링 속도 확인
0
329
1

