인프런 커뮤니티 질문&답변
ref 에 대한 이해 부족이 있어 질문 드립니다.
해결된 질문
작성
·
196
0
자료구조 맛보기 -연습문제
staic void Sort(int[] scores)에 관하여 영상을 보기 전 저는 해당 메소드가 원본 배열을 복사한다고 생각하여 swap을 해주는 과정에서 ref를 사용했습니다.
그 후 sort 메소드에서 scores 출력, 메인메소드에서 sort()후 scores 출력을 해봤는데 정상적으로 sort가 되더군요.
문제는 테스트로 ref를 제거해봤을 때 sort() 메소드 안에서 출력한 scores는 정렬이 되지만 원본인 메인메소드의 scores 는 정렬이 되지 않을 거란 생각과 달리 같이 정렬이 되어 있더군요.
ref에 대한 이해가 부족하다고 생각되어 이 문제에 관한 조언을 듣고 싶습니다. (항상 빠르고 친절한 답변 감사합니다!)
-
sort 코드
static public void Sort(int[] scores) // 작은 순 정렬
{
//가장 간단한 방법
//가장 큰 거부터 뒤로 하나 씩 옮기고 맨 뒤을 제외하고 다시 반복
for (int i = 0; i < scores.Length; i++)
{
for(int j = 0; j <scores.Length-1; j++ )
if (scores[j] > scores[j + 1])
{
// Swap(ref scores[j], ref scores[j + 1]);
int temp = scores[j];
scores[j] = scores[j + 1];
scores[j + 1] = temp;
}
}
foreach (int score in scores)
{
Console.WriteLine(score);
}
}
//static void Swap(ref int a, ref int b)
//{
// int temp = a;
// a = b;
// b = temp;
//}
main
static void Main(string[] args)
{
//배열 연습문제
int[] scores = new int[5] { 10, 30, 50, 40, 20 };
Program.GetHighestScore(scores);
Program.GetAverageScore(scores);
Program.GetIndexOf(scores, 50);
Program.Sort(scores);
foreach (int score in scores)
{
Console.WriteLine(score);
}
}





