Timsort의 Swenson 's C 구현을 찾았습니다 : 이전의 SO 질문 중 하나에서 언급 한 https://github.com/swenson/sort.구조체를 정렬하는 동안 Swenson의 Timsort 구현과 관련된 문제
1) 내가 정렬 할 유형에 적합한 SORT_CMP 매크로를 정의해야이 기능을 사용하려면
나는 두 가지 문제가 발생했습니다. 내가 정의하려고typedef struct{
int a;
int b;
} MyType
:
#define SORT_TYPE MyType
#define SORT_CMP(x,y) (x.a - y.a)
을하지만 오류가 점점 계속 : 'A'뭔가 회원은 "요청을 내 타입은 (여기 단순화 조금)로 정의된다
#define SORT_CMP(x,y) (x->a - y->a)
중 하나가 작동하지 않습니다 구조 또는 조합 " 나는 어쩌면 x와 y 포인터 수 있지만 것이라고 생각했다. 도와 주실 수 있나요? 나는 C 초보자이고 아마도 뭔가를 놓치고 있습니다.
2) Visual Studio에서이 코드를 컴파일 할 수있는 방법이 있습니까? 그것은 블록의 중간에있는 선언 같은 새로운 C 표준의 내용을 사용하고 cl.exe는이를 받아들이지 않습니다. GCC (mingw)를 사용하여 컴파일했지만 mingw는 VC (O2 또는 O3 플래그 대/Ox과 lc.exe)를 사용하는 것보다 나머지 코드에서 20 % 더 느려서 stdlib qsort 대신 Timsort를 사용하여 얻을 수있는 모든 이점을 얻을 수있었습니다. 그것을 보상하지 않습니다. Pelles 컴파일러에서도 마찬가지입니다. 대부분의 데이터는 부분적으로 정렬 된 시퀀스가 많으며 정렬에는 실행 시간의 약 50 %가 소요되므로 VC로 작동한다고 가정 할 때 여기에서 얻는 이득이 있다고 느낍니다.
'MyType' 레코드의 간단한 배열을 정렬하는 데 사용하는 프로그램의 작고 완전한 예를 게시하여 문제를 보여주십시오. –
문제는 전혀 컴파일되지 않았다는 것입니다. 대답을 받아 들여 해결했습니다. –