一些小知识点

字符串比较函数
忽略大小写的字符串比较函数 strcasecmp
  • 头文件:
#include<string.h>
  • 函数说明:

strcasecmp()用来比较参数s1和s2的字符串,比较时会自动忽略大小写的差异。

  • 返回值
返回说明返回值
相等返回0
如果s1>s2返回大于0的
如果s1
#include<string.h>
int main(void)
{
    char *a="aBcDeF";
    char *b="AbCdeF";
    if(!strcasecmp(a,b))
        printf("%s=%s\n",a,b);
}
数据结构中的一些基础概念
时间复杂度
  • 算法的效率主要由一下两个复杂度来评估:
    • 时间复杂度:评估执行程序所要的时间。可以估算出程序对处理器的使用程度。
    • 空间复杂度:评估执行程序所要的存储空间。可以估算出程序对计算机内存的使用程度。
时间复杂度
  • 时间频度:一个算法执行所消耗的时间,必须上机运行测试才能知道。我们只需知道那个算法花费的时间多就可以了,并且一个算法花费的时间与算法中语句的执行次数成正比。一个算法中语句执行次数成为频度或时间频度,记为T(n)。
  • 时间复杂度:n称为问题的规模,当n变时,T(n)也变,相知变化时规律,引入时间复杂度,如有某个辅助函数f(n),当n趋于正无穷时,T(n)/f(n)的极限值为不等于0 的常数,则称f(n)是T(n)的同数量级函数,记作T(n)=O(f(n))。
大O表示法
大O表示含义
O(1)常数阶
O(n)线性阶
O(logn)对数阶
O(n2)平方阶
O(nlogn)nlogn阶
O(n3)立方阶

* 推到大O阶

  • 用常数1来取代运行时间中所有加法常数
  • 修改后的运行次数函数中,只保留最高阶项
  • 如果最高阶项存在且不是1,则去除与这个阶相乘的常数

    • 常数阶
    int sun=0,n=100;//执行一次
    sum=(1+n)*n/2;//执行一次

    上面算法运行的次数的函数为f(n)=2,根据上面的要点,将3改为1。所以这个算法的时间复杂度为O(1),如果int sum这条执行100遍,因为与n大小无关,所以还是为O(1)。

    • 线性阶
    for(int i=0;i<n;i++)
    {
      //时间复杂度为O(1)的算法
    }

    上面的算法循环体中执行了n次,所以为O(n)。

    • 对数阶
    int number=1;
    while(number<n)
    {
      number=number*2;
      //时间复杂度为O(1)的算法
    }

    随着number每次*2后,都会越来越接近n,当number不小于n时就会退出,假设循环x次,则x=log2n,所以为O(logn)。

    • 平方阶
    for(int i=0;i<n;i++)
    {
      for(int j=0;j<n;j++)
      {
          //复杂度为O(1)的算法
      }
    }

    内层的复杂度O(n)在n次循环 所以复杂度为O(n2)。

写项目遇到的问题
  • 字符串:
send(fd,str,strlen(str),0);
recv(sockfd,str,sizeof(str),0);
  • 结构体
send(sockfd,&USER,sizeof(struct use),0);
C语言中的memset和bzero
  • memset:

    void *memset(void *s,int c,size_t n);
    • 作用:将已经开辟的内存空间s中钱n个字节替换成c并返回s。
    • 头文件
    
    #include<string.h>
    
    • 在一段内存块中填充某个给定的值,是对较大的结构体或数组进行清零操作的一种方法。
  • bzero:

    void bzero(void *s,size_t n);
    • 作用:将内存空间s的前n个字节置零,包括(‘\0’),无返回值。
    • 头文件
    
    #include<string.h>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值