배열의 오름차순
찬솔나라
질문 제목 : 질문 내용 : 안녕하세요?? 배열의 오름차순을 구하려고 하고 잇습니다.. ㅜㅜ 밑에 소스를 보면 배열에서 최소값을 찾는 함수를 따로 만들어서 그걸 따른 함수에 대입시켜 비교한 뒤에 배열의 순서를 뒤바꾸는 형태인데요.... 계속해서 제가 원하는 결과 값이 안나오네요 ㅜㅜ 제가 보기엔 빨간색으로 칠해 놓은 return i가 계속 맨 끝의 값만 출력 시켜서 그런거 같은데...
어덯게 해야 할까요 ㅜㅜ
#include stdio.h
#include stdlib.h
#include time.h
#define max 20
void fillarray(int list[], int size);
void printarray(const int list[], int size);
void sortarray(int list[], int size);
int findmunundex(const int list[], int start, int end);
void printarray2(const int list[], int size);
void main(void)
{
int list[max];
int size;
srand((unsigned)time(null));
printf(배열의 크기 입력: );
scanf(%d, &size);
fillarray(list, size);
printarray(list, size);
sortarray(list, size);
printarray2(list, size);
}
void fillarray(int list[], int size)
{
int i;
for(i=0; isize; i++)
{
list[i] = rand()%100+1;
}
}
void printarray(const int list[], int size)
{
int i;
printf(\n난수로 생성되어 배열에 저장된 숫자를 나열합니다\n);
for(i=0; isize; i++)
{
printf(%d%s, list[i], (i==5) ? \n : \t);
}
printf(\n);
}
void sortarray(int list[], int size)
{
int i, j, temp;
//이 알고리즘은 무조건 size-1 번 반복이 필요함
for(i=0; isize-1; i++)
{
j = findmunundex(list, i, size-1);
//가장 작은 값이 있는 위치에 있는 값과 현재 위치에 있는 값을 교환함
if(i!=j)
{
temp = list[i];
list[i] = list[j];
list[j] = temp;
}
}
}int findmunundex(const int list[], int start, int end)
{
int min=list[start];
int i;
for(i =start; iend; i++)
{
if(min list[i])
{
min = list[i];
}
}
return i;}void printarray2(const int list[], int size)
{
int i;
printf(\n오름차순으로 정리하여 출력합니다.\n);
for(i=0; isize; i++)
{
printf(%d%s, list[i], (i==5) ? \n : \t);
}
printf(\n);
}