C++_直接插入排序(纯C版)

来源:互联网 发布:爱拍录屏软件 编辑:程序博客网 时间:2024/05/18 10:51
//用于比较大小
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;}}


原创粉丝点击