for(int i=0; i<10-1; i++)
for(int j=i+1; j<10; j++)
if( A[i] > A[j])
{
temp =A[i];
A[i]=A[j];
A[j]=temp;
}
}
급하게써서 맞는 코드인진 모르겠는데
i=0일때 j=0 to 10까지 가지여
A[0]에서 A[0]부터 A[9]까지의 수 중에 가장 작은 수가 a[0]에 들어가게 되어요
A[i]와 A[j]가 위치를 바꾸기때문에 A[i]에 i가 0~9까지 그 자리에는 점점 더 작은값이 들어오지여
i=2일때 A[0]과 A[1]은 비교대상에서 제외되지여. 이미 A 배열에서 가장 작은값이 순차적으로 들어간상태라(A[j]로 0~9까지의 배열을 이미 다 체크 한 후 최소값이 들어가기때문)
그럼 A[j]의 경우는 초기값이 i이기때문에 이미 지나간 배열인 A[0]과 A[1]은 간섭 안하게되구여
제가 설명에 재능이 없어서 ㅜㅜ
암튼 님 과제에서 A[m]인 배열이랑 B[n]인 배열 오름차순하고 C[m+n] 구해서 정렬하라고 되어있던데
위 코드를 A에 적용시키고(상수 10에는 모두 m) B에도 적용시키고(상수 10은 모두 n)
그다음 C[0]~C[m-1]에다가 A[0]~A[m-1]집어넣고 C[m]~C[m+n-1]에다가 B[0]~ B[n]값을 집어 넣은다음에
또 다시 위 코드를 C에 적용(상수 10에는 모두 m+n)시키는게 그 과제인듯..
일단 위와같은 코드가 여러번 반복되니 A배열과 그 배열의 크기인 m을 가져오는 함수 merge(A[],m)같은식으로 하신다음
두 배열을 합쳐서 정렬하는 submerge(A[],B[],m,n)의 함수를 만드시면 완성...
이렇게 함수를 이용하면 가독성도 좋아서 보는사람이 이해하기 쉬워요
으
아!!
뭔소리지..
다시 보니깐 오름차순 되어있는 정렬 A와 B네요. 이 경우 제가 쓴 코드 위에 C배열에 A,B의 값을 순차적으로 입력하고(정렬안된 C배열을 만듬) 위 코드의 A를 C로 고치시고 10을 m+n으로 쓰시면 원하시는 정렬이 됩니당..
틀린가 역시;
아 글고보니 for(j=i+1이 되어야하넹 근데 이거만 문제는 아니겠고
for(i=0;i<10-1이 되어야하네요 그리고.. 왜냐면 마지막 배열이 a[9]인데 a[8]과 a[9]가 마지막 비교가 되어야하기에
보기 편하시게 수정함