一、一维数组的知识
#### 扩:setw(输出的宽度) C++ 中的格式化函数,用于指定输出流的宽度。不能用于输入流
#### 一维数组:一组相同类型的变量
## 格式:类型标识符 数组名[常量表达式]; eg: int a[5];
-- 类型标识符(基本数据类型/结构体等构造类型)
## 引用数组格式:数组名[下标]
eg: h[5]、h[i*2+1]等。
注意1:下标只能为整型常量或整型表达式 √√√
-- 整型表达式而不是整形变量 √√√
注意二:下标值必须在数组定义的下标范围内
注意三:不能一次引用整个数组,只能逐个引用数组的单个元素。
注意四:单输出数组名,返回数组的首地址
## sizeof会返回数据类型的(字节)大小 int = 4字节 =(4*8)32位 1字节 = 1字符 = 1/2汉字 √√√
eg:int a[3]={1,2,3};
int b=12;
cout << sizeof(a) << endl;
cout << sizeof(b) << endl;
## system("pause") -- 暂停程序的执行(暂停命令行窗口) 目的:为了查看程序的结果/错误信息
## 数组在计算机内存单元中是连续存储的
## 数组的插入思路:从最后开始往后移动直到插入后的位置逐步加一,然后开始插入x √√√
## 数组的删除思路:从删除的位置之后开始往前i减一(直接进行覆盖,不用再删除) √√√
## 数组的查找x:
# 查找操作的结果:可能是一个没找到、找到一个或者找到很多个
# 常见的查找:顺序查找和二分查找
# 顺序查找:按照从前往后的顺序,将数组中的元素依次与要查找的数x进行比较。
# 二分查找(折半查找):√√√
要求:数据是递增或递减排序的。数据是有序的。
left right mid=(left+right)/2 循环:mid跟查找x比较,找到输出位置;
若没找到,若在左面,right=mid-1,若在右面,left=mid+1
优点:比较次数少、查找速度快。
## 数组的排序问题:通过数组中的元素比较和交换来实现的,关键是数组下标的分析 √√√
# 选择排序:从小到大:假设一个最小的,依次每个与最小的进行比较(获取最小的) 放在第一个位置(依次放到第二个位置.... )
# 冒泡排序:从小到大:每一轮依次两两进行比较,大的交换到后面(依次第二后,第三后...)
# 插入排序:
思想:把所有待排序元素分成前后两段,前一段是已经排好序的,后一段是待排序的。
每一趟都是把后一段的第一个数“插入”到前一段的某一个位置,保证前一段仍然是有序的。
开始时,第 1 个数作为前一段肯定是有序的;第一趟,把第 2 个数插入进去,保证前 2个数有序;
第二趟,把第 3 个数插入进去,保证前 3 个数有;……第 n-1 趟,把第 n 个数插入进去,保证 n 个数都有序。
二、数组的整体赋值
整体赋值(统一赋值):给数组按字节整体赋值,按元素整体赋值:
## fill(d,d+5,8); //给d数组的前5个元素赋值为8
## memset(c,0,5); //给数组前5个字节都赋值为 0
## memset(b,1,sizeof(b)); //将b数组所有元素均赋值,按照sizeof(int) = 4字节 = 每一字节按8位计算2^0+2^8+2^16+2^24
## 示例:
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){