VC++ 퀵소트 (Quick Sort) 정리
먼저 퀵소트 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 ); // 퀵소트 호출
}