嵌入式Linux学习DAY7+DAY8

Linux代码对齐方式:

单行对齐:命令模式下“==”自动对齐

多行对齐:选中多行,按一下=

全局对齐:gg=G

                  按gg光标回起始行,按G到最后一行

经验:

       一组数据比最大值最小值:用循环输入一次处理一次

数组

一组相同类型的数据的集合

作用:一次性定义多个相同类型的变量

一维数组

   语法:类型说明符 数组名 [常量表达式],本质为 int[10] a;(与int a类似)

类型说明符:int,short,long,long long

数组名:数组所在空间的名字,数组首元素的地址

[] //表示定义一个数组

常量表达式:表示数组的长度---变量的个数,本质是偏移量,针对首元素的地址的偏移,如a[5],则a[0]的地址为0x100,则a[3]对0x100偏移了3个地址位。

如: int array[5]; //定义了一个数组,里面存有5个int型变量,有20个字节

数组给值方式:

                      初始化:int  a[5] = {1,2,3,4,5};//里面的值为元素

                       元素使用(元素访问):

                                                              语法:a[元素所在位置]

                                                               如:printf(“%d” ,a[3]);

                                                                      scanf("%d" , &a[i]);

嵌入式Linux学习DAY7+DAY8_第1张图片

数组具有 1.连续性----存储在一片空间内

                2.有序性----元素依次存储

                3.单一性----单一类型元素

数组越界值为乱码;

数组初始化时未定义的值自动赋值为0;

数组不初始化,其值为任意随机值。

数组长度可以省略,但必须有值(变量),因为编译器可以自己计算数组长度。

数组赋值不能整体赋值:

                                      如:a[5]={1,2,3,4,5};

可变数组:int a;

                  scanf("%d",&a);

                  int b[a];    //即可控制数组长度,但该数组不能初始化

字符数组

字符常量是按照字符数组形式存储的,如“tom”这三个字符储存的是s[4],存有‘t’‘o’‘m’‘\0’

,其中‘\0’为字符结束标志。有‘\0’的才是字符串,否则就只是字符数组。

puts:输出字符串,输出时自动换行,使用方法----puts(“数组名”)

gets:输入字符串,使用方法----gets(数组名)---需要头文件#include,且容易警告

字符数组的值赋予另一个字符数组:strcpy(c1,c2)  //将c2的字符给与c1

排序

为合适的位置选择合适的数。(比大小)

选择排序:

冒泡排序:

插入排序:在有序的数列里插入一个数(两个定好的数,新来一个数,与两者对比,从而找到合适的位置---如果是一堆数,则是找到前者比自己小,后者比自己大的位置)

例子(部分):
 

      
        for(j=0;j0&&b[i-1]>t)//与插入数前方值对比,并挪动值

          {

            b[i]=b[i-1];

            i--;

           }  //找位置

           b[i]=t;//插入数

           }

判断代码优劣

1.算法稳定性

2.效率:时间复杂度----运行到n,用的次数。(对n求无穷)

             空间复杂度-----对内存的占用。

排序运用

二分查找:

               前提:数据有序

               思想:运用begin、end、mid三个值,先找到end与begin的中间值mid,比较要找的数与mid的大小,大则mid替代begin,小则替代end,直达mid与查找值想等。

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