嵌入式学习日记 8

题外话:选择 冒泡 谁好 ?


算法稳定性 和 效率
时间 -- 时间复杂度 (CPU执行代码(指令)的数量 = 消耗的时间)
    O(n)    //大O计法
    O(n) = n^2
空间


一、插入排序:


思想:
    (在有序的序列)中,找一个合适的位置,插入
举例:
    军训
    5 2 4 6 3 1 8 7 
    0 1 2 3 4 5 6 7
    新数组
    先将5放到新数组第一位
    5
    0 1 2 3 4 5 6 7
    再将2放进来 查看是否比前面的数小 是的话前一位往后挪
      5
    0 1 2 3 4 5 6 7
    前面没数 放2进去
    2 5
    0 1 2 3 4 5 6 7
    将4放进来 查看是否比前面的数小 是的话前一位继续往后挪
    2   5
    0 1 2 3 4 5 6 7
    前面数比4小 后面数比4大 直接放下4
    2 4 5
    0 1 2 3 4 5 6 7
    依此类推
    
    for(j = 1;j < n;++j)
    {
        t = a[j];
        i = j;
        while(i > 0 && b[i-1] > t)
            {
                b[i] = b[i-1];
                --i;
            }
    }


    总结:


    1.数组概念
    2.数组定义
    3.数组给值
        初始化
        赋值
        输入
    4.算法
        a.找一个数
        b.求极值
        c.逆序
        d.排序
            选择/冒泡/插入
    5.变长数组
    
    ------------------------------------
   

应用


    查找:
    二分查找(折半查找)
    前提:
        数据必须有序
    思想:


二、一维字符型数组:


    字符数据:


    unsigned char s[10];    //
    unsigned char s[10]={'h','e','l','l','o'};    //数组考虑
    "hello" --> unsigned char s[10] = {'h','e','l','l','o','\0'};
    '\0' 对于字符串来说,叫做结束标志
    如果没有字符串结束标志 打印字符串可能有存储空间后面的垃圾值
    最主要:
    "tom"
    "english"    //字符串 常量
                //本质存储的时候,是按照 字符数组 的形式存储的
    字符数组: 主要作用,想处理字符串数据
    注意:
        1.字符串 -- 更关注的是字符串整体,而不是单个字符
        2.字符串的结束标志 比较重要,表示字符串结束
        3.处理字符串时,常常使用字符串结束标志作为判断
        
        

int puts(const char *s);用法
        

功能:
            输出字符串
        参数:
            @s 字符串所在空间的首地址
        返回值:
            int 成功 > 0
                失败 -1
        输出时 结束自动输入换行
        
  

     char *gets(char *s);用法


        功能:
            输入字符串
        参数:
            @s 存放字符串的一块内存空间
        返回值:
            表示的是 存储字符串的那块空间首地址
        char *strcpy(char *dest,const char *src);
        功能:
            实现字符串拷贝
        参数:
            @dest 目标字符串
            @src 源字符串
        返回值:
            成功 返回dest地址
            失败 返回NULL

你可能感兴趣的:(算法,学习)