|
#include<stdio.h>
void quicksort(int score[],int first,int last)
{
int i,j,x,t;
x=score[first+last/2];
i=first;
j=last;
for( ; ; ){
while (score[i]<x) i++;
while (x<score[j]) j--;
if (i>=j) break;
t=score[i]; score[i]=score[j]; score[j]=t;
i++;j--;
}
if (first<i-1)quicksort(score,first,i-1);
if (i+1<last)quicksort(score,j+1,last);
}
위에가 퀵 소팅의 함수부분을 만든 것인데
문제는 이게 2중배열이라는 것에 있습니다.
배열의 선언은 score[100][9]; 로서 100명의 9가지 항목에 대하여 받는 것인데
사람의 숫자는 입력이 종료 될때 까지니 항상 100명이 아니라서
그 숫자는 count변수를 선언하여 count에 저장 시켰습니다.
메인에서 함수를 호출할때
quicksort(score[],0,count); 이렇게 하면 워닝이 2개가 뜨더라구요
score[] []안쪽에 숫자 몇개를 집어넣어서 확인 해 봤더니 []안의 숫자만큼
출력이 제대로 나오고 그 아래는 엉망으로 나오더군요
최대 100명을 출력해야 하니 score[100]으로 하여
quicksort(score[100],0,count); 이렇게 했습니다.
에러도 없고 워닝도 없더라구요 그런데 사람이 적을 때는 출력하더니
한 13명 그 이상의 데이터를 받으니
출력이 되지 않고 바로 프로그램 자체가 종료가 되어버립니다.
(출력문은 메인 안에 있습니다.)
같은 소스의 소팅만 버블로 한 것은 잘 돌아갑니다.
어떻게 해야 하나요? 고수님들 가르쳐 주세요 ㅡㅜ
제가 사용하는 프로그램은 비쥬얼 C++이고 C++이 아닌 C언어로만 가르쳐 주시면
감사하겠습니다.
|