교수님이 올리신 소슨데요
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
int nums[10];
int i,j, temp;
int minIndex;
srand(time(NULL));
for(i=0;i<10;i++){
nums[i] = rand()%100 ;
}
for(i=0;i<10;i++){
printf("%d\t", nums[i]);
}
for(i=0;i<9;i++){
minIndex = i;
for(j=i+1;j<10;j++){
if(nums[minIndex] > nums[j]) {
minIndex = j;
}
}
if( minIndex != i ){
temp = nums[minIndex] ;
nums[minIndex]=nums[i];
nums[i]=temp;
}
}
for(i=0;i<10;i++){
printf("%d\t", nums[i]);
}
return 0;
}
이걸 실행시키면 10개 숫자를 무작위로 받은거 한줄이랑 작은숫자부터 소팅된 한줄이 출력되는데요
제가 이해안가는부분은
temp = nums[minIndex]
nums[minIndex]=nums[i];
nums[i]=temp;
이부분인데요 minindex가 i가 아닌 j값으로 바뀌엇다면 if문을 타서 저곳으로 오는거까진 알겟는데
왜 temp를 거쳐야하는지 또 nums[minIndex]=nums[i];에서 어차피 위로올라가서 minIndex = i;로 초기화되는데
nums[i]값을 왜 넣어줘야되는건지 잘모르겟어요.. 이게아마 제일 작은수를 앞으로빼는 과정인거같은데 잘 이해가안가네요..
혹시 답변 가능할까요??