常见函数实现

参考mfc下的源文件以及网上的一些代码实现。留着做个参考

strcmp比较两个字符串大小

int mystrcmp( const char * src, const char * dst )
{
    int ret = 0 ;
    while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
    {
        ++src;
        ++dst;
    }

    if ( ret < 0 )
    {
        ret = -1 ;
    }
    else if ( ret > 0 )
    {
        ret = 1 ;
    }
    else
    {
    }

    return( ret );
}

strcpy复制字符串

 

 

char* mystrcpy( char* dest, const char* source)
{
 char* start = dest;
 while( *source )
 {
     *dest++ = *source++;
 }
 *dest = '\0';
 return start;
}

strcat连接两个字符串

char* mystrcat( char* dst, const char* src )
{
    if( src == NULL )
    {
    return dst;
    }
    char* start = dst;
    while( *dst != '\0' )
    {
       dst++;
    }
	
    while( *src != '\0' )
    {
        *dst++ = *src++;
    }
	
    *dst = '\0';
    return start;
}


直接插入排序

void straitSort(int src[], int nLength )
{
    int j;
    for( int i = 1; i < nLength; i++ )
    {
        int temp = src[i];
        j = i - 1;
        while((j>= 0) && (temp < src[j]))
        {
            src[j+1] = src[j];
	   j--;
        }
        src[j+1] = temp;
    }
}

2分法排序

void binarySort( int src[], int nLength )
{
    for( int i = 1; i < nLength; i++ )
    {
        int begin = 0;
        int end = i-1;
        int middle = (begin + end) / 2;
        while(begin <= end)
        {
            if( src[i] >= src[middle] )
	   {
	       begin = middle + 1;
	       middle = (begin + end)/ 2;
	   }
	   else if( src[i] < src[middle] )
	   {
	       end = middle - 1;
	       middle = (begin+end) / 2;
            }
        }
		
        int temp  = src[i];
        for( int m = i; m > begin; m--)
        {
            src[m] = src[m-1];
        }
    src[begin] = temp;
    }
	
}


冒泡法排序

void bubbleSort( int src[], int nLength )
{
    for( int i = 0; i < nLength; i++ )
    {
        for( int j = 1; j < nLength - i; j++)
        {
            if( src[j-1] < src[j] )
	   {
	   int temp = src[j-1];
	   src[j-1] = src[j];
	   src[j] = temp;
	   }
	}
    }
}


 

 

 


 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值