C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[47003] Re:2중 배열을 퀵 소팅 하기
마술감자.명국진 [magicpotato] 1129 읽음    2006-11-07 15:46
quicksort(score[100],0,count); 이라는 호출은 quicksort(score+100,0,count); 과 같습니다.
즉, score배열의 101번째 요소의 주소부터 count만큼 작업하라는 뜻입니다.

다음과 같이 100번을 호출해 주어야 합니다.

for ( int i = 0 ; i < 100 ; i++)
{
    count = 입력;
    quicksort(score[i], 0, count);
}

후아..;;; 님이 쓰신 글 :
: #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언어로만 가르쳐 주시면
: 감사하겠습니다.

+ -

관련 글 리스트
46977 2중 배열을 퀵 소팅 하기 후아..;;; 1251 2006/11/06
47003     Re:2중 배열을 퀵 소팅 하기 마술감자.명국진 1129 2006/11/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.