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
[3856] [질문] 빠른 디스크 정렬알고리즘좀... 알고싶습니다.
퀵정렬 [] 3298 읽음    2000-08-01 00:00
안녕하세요 구조체를 이용하여 전화번호부 구조체를 만들어
이름/전화번호/주소 이 필드를 사용해 이진파일로 저장을했습니다.
그런데 데이타가 10만개를 무작위로 저장해서 지금사용하는
정렬을 써보니 무진장 느립니다..심지어는
컴퓨터가 다운이 되버립니다.
데이타가 10만개이상에서 유용히 사용할만한 소트알고리즘은
없는것인지요?
DB를 사용한게 아니라 그냥 씨 파일관련함수로 작성된
DB입니다.

아래는 사용한소스입니다.
void TMainForm::DiskSwap(long int i,long int j)
{
struct DBTYPE db1,db2;
FILE *fp;
fp=fopen(FileName,"r+b");
fseek(fp,sizeof(struct DBTYPE)*i,SEEK_SET);
fread(&db1,sizeof(struct DBTYPE),1,fp);
fseek(fp,sizeof(struct DBTYPE)*j,SEEK_SET);
fread(&db2,sizeof(struct DBTYPE),1,fp);
fseek(fp,sizeof(struct DBTYPE)*i,SEEK_SET);
fwrite(&db2,sizeof(struct DBTYPE),1,fp);
fseek(fp,sizeof(struct DBTYPE)*j,SEEK_SET);
fwrite(&db1,sizeof(struct DBTYPE),1,fp);
fclose(fp);
}
//---------------------------------------------------------------------------

int TMainForm::DiskComp(long int i,long int j)
{
struct DBTYPE db1,db2;
FILE *fp;

fseek(fp,sizeof(struct DBTYPE)*i,SEEK_SET);
fread(&db1,sizeof(struct DBTYPE),1,fp);
fseek(fp,sizeof(struct DBTYPE)*j,SEEK_SET);
fread(&db2,sizeof(struct DBTYPE),1,fp);
fclose(fp);
return strcmp(Dataenc(db1.Name),Dataenc(db2.Name));
}
//---------------------------------------------------------------------------

void TMainForm::NameSort(long int left,long int right)
{
long int i,last;

if(left >= right) return;

DiskSwap(left,(left+right)/2);
last=left;

for(i=left+1;i<=right;i++)
    if(DiskComp(i,left)<0)
     DiskSwap(++last,i);

DiskSwap(left,last);
NameSort(left,last-1);
NameSort(last+1,right);
}
//---------------------------------------------------------------------------


위의 코딩으로 작업을 하였습니다.
도스 C 책에 있던 코드를 사용한것인데
겁나게 느려요

겁나게 빠른 정렬좀 알려주세요 제발...

10만개 데이타도 거뜬히 정렬해서 저장할수 있는 그런 정렬소스좀...

+ -

관련 글 리스트
3856 [질문] 빠른 디스크 정렬알고리즘좀... 알고싶습니다. 퀵정렬 3298 2000/08/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.