C博客作业04--数组

| 这个作业属于哪个班级 | C语言--网络2011/2012 |
| ---- | ---- | ---- |
| 这个作业的地址 | C博客作业04--数组 |
| 这个作业的目标 | 学习数组相关内容 |
|姓名 | 曹秋秋 |

1.本章学习总结

1.1 学习内容总结

  • 查找数据
    查找数据数组的三种查找方法分别为,顺序查找,二分法查找(折半查找),分块查找
  1. 顺序查找:不需要排序,遍历所有数组元素,查找时间较长。
  2. 二分法查找:需要对所有数据进行排序,适合顺序结构。因为每次都是和中间值比较,如果大于选中间值后面的部分继续二分查找,如果小于中间值则选前面的部分继续执行
  3. 分块查找:需要按照数值大小进行排序分块,虽然每个块中的大小可以不排序,但是块的取值区间是排序的。
  • 插入数据
    伪代码(假设从小到大排列)
输入要插入的数据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输出
  • 排序方法
    冒泡法
  1. 假设要想让数组从小到大排序,从数组头部开始,不断比较相邻的两个元素的大小,让较大的元素逐渐往后移动(交换两个元素的值),直到数组的末尾。经过第一轮的比较,就可以找到最大的元素,并将它移动到最后一个位置。
    2。 第一轮结束后,继续第二轮。仍然从数组头部开始比较,让较大的元素逐渐往后移动,直到数组的倒数第二个元素为止。经过第二轮的比较,就可以找到次大的元素,并将它放到倒数第二个位置。
  2. 以此类推,进行 n-1(n 为数组长度)轮后,就可以将所有的元素都排列好。
    选择排序法
    给定一个数组a[n],其长度为n;
  3. 第一次从 a[0] 到 a[n-1] 中选取一个最值(按照需求,可以是最大值,可以是最小值,下同)与a[0]进行交换;
  4. 第二次从a[1] 到 a[n-1] 中选取一个最值与a[1]进行交换;
  5. 以此类推,直到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]

posted @ 2020-12-13 22:37  ····。。  阅读(89)  评论(0编辑  收藏  举报