一维数组
数组随着下标的增⻓,地址是由⼩到⼤变化的,并且我们发现每两个相邻的 元素之间相差4(因为⼀个整型是4个字节)。所以我们得出结论:数组在内存中是连续存放的。这就 为后期我们使⽤指针访问数组奠定了基础(在讲指针的时候我们在讲,这⾥暂且记住就⾏)。 数组元素在内存中是连续存放的
二维数组
7.4 初始化时省略⾏,但是不能省略列
int arr5[][5] = {1,2,3};
int arr6[][5] = {1,2,3,4,5,6,7};
int arr7[][5] = {{1,2}, {3,4}, {5,6}};
数组练习(以下2个练习一个是left+,right--;另外一个查找的前提也是左<=右)
练习1:多个字符从两端移动,向中间汇聚 编写代码,演⽰多个字符从两端移动,向中间汇聚
此种是依次减少#,但是每次while循环得到的结果都会显示
用system,依次对#减少,所得上一层的数在打印1s后运行到system屏幕清除,故每次都会在第一行更新,直到最后全部消除后
这种情况就会打印最后的结果.因为只是屏幕清除,arr2的值并没有变
也可以用sz来写
练习2:⼆分查找
在⼀个升序的数组中查找指定的数字n,很容易想到的⽅法就是遍历数组,但是这种⽅法效率⽐较低。 ⽐如我买了⼀双鞋,你好奇问我多少钱,我说不超过300元。你还是好奇,你想知道到底多少,我就让 你猜,你会怎么猜?你会1,2,3,4...这样猜吗?显然很慢;⼀般你都会猜中间数字,⽐如:150,然 后看⼤了还是⼩了,这就是⼆分查找,也叫折半查找
如(0+9)/2=4;判断是否大于4这个点;如果大于则进入5~9;
反之进入0~3
用遍历数组
二分查找
用flag是否变化判断是否能查到,并且在二者不相等时不需要打印