//用于比较大小
int compared(const void *key1,const void *key2) { cout<<"enter compare"<<endl; const int* iKey1 = (int*)key1; const int* iKey2 = (int*)key2; cout<<*iKey1<<endl; cout<<*iKey2<<endl; if(*iKey1>*iKey2){ //cout<<"big"<<endl; return 1; } else if(*iKey1==*iKey2){ //cout<<"equal"<<endl; return 0; } else if(*iKey1<*iKey2) { //cout<<"less"<<endl; return -1; } }
//C版排序执行片段
int issort(void *data, int size,int esize,int (*compare)(const void *key1,const void *key2)) { char *a = (char*)data; void *key=NULL; int i=0,j=0; if((key=(char *)malloc(esize))==NULL) { return -1; } else { memset(key, 0, esize); for(j=1;j<size;j++) { memcpy(key, &a[j*esize],esize); i=j-1; while(i>=0&&compare(&a[i*esize],key)>0){ memcpy(&a[(i+1)*esize],&a[i*esize],esize); i--; cout<<i<<endl; } memcpy(&a[(i+1)*esize],key,esize); } free(key); return 0; } }