C博客作业04--数组
| 这个作业属于哪个班级 | C语言--网络2011/2012 |
| ---- | ---- | ---- |
| 这个作业的地址 | C博客作业04--数组 |
| 这个作业的目标 | 学习数组相关内容 |
|姓名 | 曹秋秋 |
1.本章学习总结
1.1 学习内容总结
- 查找数据
查找数据数组的三种查找方法分别为,顺序查找,二分法查找(折半查找),分块查找
- 顺序查找:不需要排序,遍历所有数组元素,查找时间较长。
- 二分法查找:需要对所有数据进行排序,适合顺序结构。因为每次都是和中间值比较,如果大于选中间值后面的部分继续二分查找,如果小于中间值则选前面的部分继续执行
- 分块查找:需要按照数值大小进行排序分块,虽然每个块中的大小可以不排序,但是块的取值区间是排序的。
- 插入数据
伪代码(假设从小到大排列)
输入要插入的数据x
遍历数据找到大于x的数据的下标index跳出循环
将这个数据和后面的数据下标都加一即往后移一位
for j=?;j>i;j--
a[j+1]=a[j]
将x赋值给数组的那个下标
a[i]=x
输出数据
- 删除数据
输入数组a[n]
for(j=i;j<=n;j++)//i是要删除元素的位置
a[i]=a[i+1]//将删除元素后的元素往前移一位
for输出
- 排序方法
冒泡法
- 假设要想让数组从小到大排序,从数组头部开始,不断比较相邻的两个元素的大小,让较大的元素逐渐往后移动(交换两个元素的值),直到数组的末尾。经过第一轮的比较,就可以找到最大的元素,并将它移动到最后一个位置。
2。 第一轮结束后,继续第二轮。仍然从数组头部开始比较,让较大的元素逐渐往后移动,直到数组的倒数第二个元素为止。经过第二轮的比较,就可以找到次大的元素,并将它放到倒数第二个位置。 - 以此类推,进行 n-1(n 为数组长度)轮后,就可以将所有的元素都排列好。
选择排序法
给定一个数组a[n],其长度为n; - 第一次从 a[0] 到 a[n-1] 中选取一个最值(按照需求,可以是最大值,可以是最小值,下同)与a[0]进行交换;
- 第二次从a[1] 到 a[n-1] 中选取一个最值与a[1]进行交换;
- 以此类推,直到a[n-2]到a[n-1]中选出最值交换后即完成排序。(只剩下一个元素,前面的都是比它小(或者大)的)
- 枚举用法
- 哈希数组用法
2.PTA实验作业
2.1查找整数
伪代码
定义一个数组a[n],定义flag=0,输入n,x
for循环输入数组
再用for遍历数组套用if判断
if(x == a[i])则输出i即数所在的下标
令flag=1,break跳出循环
如果没有找到,flag=0,输出not found
2.2找鞍点
伪代码
输入二维数组
for(i=0;i<n;i++){
for(j=0;j<n;j++)//找当前行中最大值的下标max
for(j=0;j<n;j++)
{
判断是否有a[j][max]<a[i][max],若有则是a[i][max]不是鞍点,break退出循环
若没有则不是鞍点,break退出
if循环走完,则说明没有鞍点
- 参照超星所做,超星用函数而我没有用函数
2.3切分表达式
伪代码
if str[i]是'('或')'或'*'或'/'
找到token 换行输出str[i]
if str[i]是数字或小数点
if后一位是数字或小数点
输出数字不换行
else
输出数字,数字token结束。输出换行
if str[i]是'+'或'-'
if i==0 或 前一位是'('
str[i]是正负符号,输出不换行
else
是token 换行输出str[i]