게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
c언어 프로그램인데 분석이 안되네요ㅠ
게시물ID : programmer_3627짧은주소 복사하기
작성자 : 나얼
추천 : 0
조회수 : 431회
댓글수 : 6개
등록시간 : 2014/05/30 07:51:56
옵션
  • 본인삭제금지
교수님이 올리신 소슨데요


#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]값을 왜 넣어줘야되는건지 잘모르겟어요.. 이게아마 제일 작은수를 앞으로빼는 과정인거같은데 잘 이해가안가네요..
혹시 답변 가능할까요??
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호