• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

버블정렬 중에서 현재값에서 다음 값으로 넘어가도록 하는 부분 질문입니다.

23.11.23 15:25 작성 조회수 151

0

버블정렬 현재값/ 다음값 인덱스 세팅 궁금한 점입니다.

Now값을 세팅해주어야 할때 +1 하기 위해서 ADD를 불러와 주었는데, 이럴 때 Now는 인덱스의 값이 계산 되는 것이 아니라 Now의 엘리멘탈?(Now의 디폴트값)이 계산되어서 0에서 1이 되어지는 걸로 이해했어요.

 

그런데 밑에 Number의 배열속 인덱스의 갯수를 Lengh로 꺼내와준 뒤에 -1을 하셨는데, 이런 경우에 인덱스 속 엘리멘탈이 -1이 되는 것이 아닌 인덱스가 한개 줄어드는건데, 이 부분이 왜 -1이 되어야 하는지 잘 모르겠습니다.
그 다음 Min은 최솟값을 불러온다는 것인데 헷갈립니다 ㅠ

답변 2

·

답변을 작성해보세요.

0

윤창식님의 프로필

윤창식

2024.05.06

안녕하세요 벌써 6개월이 지났네요 고민해결하셨을지 모르겠습니다만, 저도 공부할겸, 그리고 혹시 이해안가시는 다른 분들을 위해서 의견한번 드려봅니다. (저도 수강생입장이라 정확하진 않아요!)

image우선 질문자님이 보내주신 사진에서 연결 하나가 빠졌습니다.

For Each Loop 함수의 기능에대해 리마인드 해보자면

배열이 가지고 있는 index의 수만큼 반복해주는 기능이죠.. 즉 배열의 인덱스가 0,1,2,3,4,5 가 있다면

6번 반복하는 것이죠... 그래서 For Each Loop노드의 Array index를 SET(Now)에 연결 시켜주셔야

0부터 차례대로 반복합니다. 빼놓으면 작동이 안되겠죠!

다시 정리하자면 Now값은 ForEachLoop에 의해서 결정됩니다 (차례대로 0,1,2,3,4,5..순으로요)

그러면 Next값은 뭘로 결정될까요??

저 블루프린트 기준으로는 Now값으로 결정됩니다. 즉 Next = Now + 1 인 것이죠

그래서 Add를 해준겁니다!! Now값을 바뀌게 하려고 넣은게 아녜요!!! Nex값을 결정할려고 한겁니다.

MIN의 역할은 써놓으셨으니까 잘 아시리라 따로 설명은 안드리겠습니다.

근데 MIN이 연결된 곳은 Next에 연결된 것이고 Next의 역할은 Index 번호를 가르키기위한 것이죠

근데 LEGTH에다가 1을 안빼면 데이터가 0,1,2,3,4,5로 6개이므로 6이겠죠?

그리고 MIN에 물려있는 Add가 가질수 있는 최대값은 6입니다(5+1)

그러면 MIN값이 마지막에 6이 출력이 되는데

최종적으로 Next값이 6을가지게 됩니다...아까 말씀드렸듯이 Next값은 인덱스 번호죠?

근데 저희가 갖고있는 인덱스는 0,1,2,3,4,5 밖에 없습니다... 즉 에러가 난단거죠

그래서 length에다가 1을 빼주는 겁니다.

 

그리고 댓글로 질문주신 사항에 대해서도 말씀드리겠습니다

5 번 계산하라고 5 값을 넣어주는 겁니당

즉, 계산 횟수 = 정렬하고자하는 숫자 개수 - 1

로 이해하시면 될거같아요

bubble sorting개념에 대해서 다시 공부해보시면 쉽게 이해하실수 있을거에요

image

0

추가적으로 For Loop를 통해서 넘버의 인덱스 수 만큼 계산을 하는건 이해했습니다.
그런데 Number 배열 인덱스의 수는 6개가 맞는데, Lengh를 하여 -1을 해주면 결과는 5입니다.
그럼 결과적으로 6번 계산이 아닌 5번 계산이 되는거 아닌지 궁금합니다