inflearn logo
강의

講義

知識共有

徹底的に始めるCプログラミング

[必須実習問題] バブルソート

값의 교환에 사용되는 변수의 위치.

解決済みの質問

88

rlaeorjs4222313

投稿した質問数 1

0

안녕하세요 강사님. 버블정렬을 구현하면서 의문점이 생겨 질문을 남김니다.

저는 값의 교환에 사용되는 tmp변수의 선언을 반복문 외부, 즉 반복문보다 먼저 선언을 했고 그 이유는 매번 값을 교환할 때마다 변수를 선언하는것이 비효율적이라고 생각했습니다.

질문1. 반복문 내부에서 변수를 매번 선언하는것이 정말 비효율적인가?

질문2. tmp변수를 반복문보다 먼저 선언하고 활용하는 것이 정말 효율적인가? 잠재적인 리스크는 없는가?

첨부자료로 제 소스코드 캡처본과 강의 타임라인을 남기겠습니다!

스크린샷 2026-02-25 오후 3.39.02.png


13:41 ->오류 발견 및 반복문 내부 최종완성

c 컴퓨터-구조 assembly-language vc++

回答 2

1

nullnull8537

AI 답변을 참고하시면 되겠습니다. 😄

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

김대건님의 질문에 답변드리겠습니다. 버블 정렬 시 tmp 변수를 어디에 선언하느냐에 따라 코드의 효율성 및 리스크를 고민하시는 질문이네요. 이와 관련하여 중요한 몇 가지 포인트를 요약해보겠습니다.

  1. 반복문 내부에서 변수를 매번 선언하는 것이 비효율적일까요?

    • 일반적으로 함수나 반복문 내부에서 변수를 선언하면 해당 블록이 실행될 때마다 변수가 새로 생성됩니다. 이는 메모리 할당 및 해제의 오버헤드가 생길 수 있지만, 현대의 컴파일러는 이러한 오버헤드를 최소화할 수 있는 최적화 기법을 많이 사용하기 때문에 실제로 체감할 수 있는 정도의 큰 비효율성을 유발하진 않습니다. 하지만 매우 빈번한 반복문이라면 이러한 최적화에도 불구하고 약간의 성능 차이가 있을 수 있습니다.
  2. tmp 변수를 반복문 외부에 선언하는 것이 정말 효율적일까요? 잠재적인 리스크는 없는가?

    • tmp 변수를 반복문 외부에 선언하면 매번 메모리를 할당하지 않아도 되어 약간의 성능 향상이 있을 수 있습니다. 다만, 이러한 이점은 매우 작은 크기의 변수에서 확연하게 드러나지는 않을 수 있습니다.
    • 잠재적인 리스크로는 가독성과 유지보수성이 있습니다. 외부에서 변수를 선언하면 해당 변수가 어디서 사용되는지 명확하지 않을 수 있으며, 특히 복잡한 코드베이스에서 예상치 못한 버그를 유발할 수도 있습니다. 따라서 변수의 범위(Scope)를 관리하여 코드의 가독성을 높이는 것이 중요합니다.

추가 자료로 버블 정렬에 대한 상세한 설명이 담긴 게시물을 공유해 드립니다:
- Algorithm: Bubble Sort Explained: 버블 정렬이 어떻게 동작하는지 알기 쉽게 설명한 자료로, 코드의 최적화를 도울 수 있습니다.

김대건님의 코드 작성에 있어서는 버블 정렬처럼 성능에 아주 민감하지 않은 알고리즘에서는 가독성과 유지보수성을 더 고려하는 것이 좋습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

scanf("%d\n") 의미

0

20

1

주소 연산자(&) 간접 지정자(*) 반대 개념

0

33

1

Virtual Memory, Memory, Memory mapping tables

0

51

1

샘플코드 출력 오류 발생 질문드립니다

0

63

2

메모리 비교에 관한 질문

0

81

2

문자열 Null

0

63

1

C, C++

0

89

2

문자열 입출력 코드 에러

0

60

2

선생님! 120화 2분 50초 질문입니다.

0

67

1

caller 가 메모리 할당 해제를 할 때의 문제점 질문

0

64

2

단축키 맞는지 여부 문의드립니다.

0

61

2

문자열을 사용하는 이중 포인터에 대하여 질문합니다

0

66

1

char 포인터 변수의 크기에 대하여 제가 이해한 것이 맞을까요

0

78

2

용어 설명 필요

0

58

2

stdin, stdout

0

71

2

필수 실습 (최댓값을 반환하는 함수)

0

93

2

아......ㅠㅠ

0

100

2

버퍼 내 엔터

0

73

1

2진수 뺄셈에서 carry-out

0

112

2

union 식별자는 실무에서 보통 어디에서 사용하나요?

0

80

2

필수실습문제 공부법 (진도 vs 복습)

0

104

2

예제파일 다운로드

0

79

2

Visial Studio Code 를 설치해서 사용해도 수업을 따라가는데 지장이 있나요?

0

120

3

연산자 기본이론 강의 질문

0

62

2