먼저 퀵소트 logic에 대해서 매우 잘 정리해놓은 사이트
http://blog.naver.com/soonchan86/130038826417
아래는 함수
http://blog.naver.com/myfd/90072567409
typedef struct {
int iManuf;
int iID;
char cStr[256];
char cName[64];
} cDBTFILE
void Swap(cDBTFILE v[], int i, int j)
{
cDBTFILE tmp;
memset(&tmp, 0x00, sizeof(cDBTFILE));
memcpy(&tmp, &v[i], sizeof(cDBTFILE));
memcpy(&v[i], &v[j], sizeof(cDBTFILE));
memcpy(&v[j], &tmp, sizeof(cDBTFILE));
}
void QuickSort(cDBTFILE v[], int Begin, int End)
{
int left,right,key;
if ( !(Begin < End) ) return;
key=v[End].iManuf; // 키값 : v.iManuf
left=Begin-1;
right=End;
while(left < right ) {
while (v[++left].iManuf < key); // 키값 v.iManuf
while (v[--right].iManuf > key); // 키값이 세 군데가 있다. 세 군데만 바꿔주면 다른 키로 소트 가능
if (left >= right) break;
Swap(v, left, right);
}
Swap(v, left, End);
QuickSort(v, Begin, left-1);
QuickSort(v, left+1, End);
}
void main(void)
{
cDBTFILE *DBTFile = new cDBTFILE[500]; // 대충 값 넣고
QuickSort(DBTFile, 0, Line ); // 퀵소트 호출
}
'700 컴퓨터 > 704 VC++' 카테고리의 다른 글
[스크랩] VC++에서 사용자 폴더 알아내기 (0) | 2010.10.21 |
---|---|
파일 경로 조작에 유용한 API들 외 기타 유용 (0) | 2010.08.07 |
VC++ 윈메인 Starting Point (0) | 2010.08.05 |
[링크] VC++ 초기 화면 윈도우 없이 DialogBox로 시작 (0) | 2010.08.05 |
VC++ DialogBox의 윈도우 옮기기 (0) | 2010.08.05 |
[스크랩] VC++6에서 Heap 영역 조절해서 컴파일하기 (0) | 2010.07.31 |
깔끔한 문자셋 정리 (유니코드 포함) (0) | 2010.07.28 |