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


    //用于比较大小
    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;
    	}
    
    }


  • 相关阅读:
    记录操作日志
    sql优化【转】
    JS事件
    MFC电子词典
    控制台电子词典---链表
    控制台电子词典
    贪吃蛇
    十六进制转化
    进程线程
    面试体复习
  • 原文地址:https://www.cnblogs.com/MarchThree/p/3720483.html
Copyright © 2020-2023  润新知