0.展示PTA总分
1.本章学习总结
1.1 学习内容总结
1.1.1数组中如何查找数据,有哪些做法
1.顺序查找法
假设数组长度为n
for 0 to n-1 if(数x==a[i]) 则此时该数组的下标 end for
2.折半查找法
设置上限下限分别为low,high
中间的查找数mid
while(low<=high) mid = (low+high)/2 当x与a[mid]相同时保存下标 小于时则将范围缩小到上半的数组 则high = mid -1 大于时则将范围缩小的下半的数组 则low = mid +1 重复寻找直至找到数组或者结束循环
1.1.2数组中如何插入数据,怎么做,可以写个伪代码或动态图展示方法
先将数组排序
当该数大于或者小于该数组的最大或者最小值时
直接在前后插入
前面插入时应先将后面的数往后移1:
for n-1 to 0 a[i+1] = a[i] end for
当该数大小位于中间时
for 0 to n-2 if(x>=a[i]&&x<a[i+1]) 则在该i+1位置插入 end for for n to i+1 a[i+1] = a[i] end for a[i+1] = x
1.1.3数组中如何删除数据,这个有多种做法,请一一展示。
1.依次遍历循环中的每一个元素,直至找到该数将后面的数前移覆盖该数
for 0 to n-1 if(x==a[i])//查找到该数 for i to n-2//将该数的后面前移一位 a[i] = a[i+1] end for end if end for
2.利用另一个数组保存删除数据后的数组
j = 0 for 0 to n-1 if (x==a[i]); else b[j] = a[i] j++ end if end for
1.1.4数组中目前学到排序方法,主要思路?
1.冒泡排序法
主要思路:
按顺序将数与下一个数相比较 如果较大则交换数组以此来让最大的数到最后一位
for 0 to n -1 for 0 to n-1-i if(a[i]>a[i+1] 交换 end if end for end for
2.选择排序法
主要思路:遍历数组,找出最大的值放到最前
for 0 to n-1 for i to n-1 if(a[i]<a[j]) 交换值 end if end for end for
3.哈希数组排序
利用哈希数组的下标来存放数
如果数存在则哈希值+1
(适用于最大值较小的数列)
1.1.5数组做枚举用法,有哪些案例?
该题可用数组来保存投哪一个节目的人数
1.1.6哈希数组用法,目前学过哪些案例,举例展示。
1.1.7字符数组、字符串特点及编程注意事项。
字符串在结尾有'\0' 可以以此为循环结束的判断条件
注意数组的上限 不能越界
scanf 来输入字符数组遇到空格回车TAB都会结束,所以应该用fgts或者gets,fgets会将回车输入
2.PTA实验作业
2.1 7-1 统计一行文本的单词个数
2.1.1 伪代码
while 输入数组直至读到'.' if(c!=' ') 则字符数+1 else if (字符数不为0) 单词个数+1,并将字符数重置为0 end while
2.1.2 代码截图
2.1.3 找一份同学代码(尽量找思路和自己差距较大同学代码)比较,说明各自代码特点
该同学利用字符串的处理方式,使代码更为简洁。
2.2 7-14 找鞍点
2.2.1 伪代码
for 0 to n//行最大数 for (j = 0; j < n; j++) 求行最大值,并保存位置:r[i] = i * 10 + j; end for end for for 0 to n//列最小数 for to n 求列最小值,并保存位置:c[j] = i * 10 + j; for 0 to n for 0 to n if (c[i] == r[j]) 输出位置:printf("%d %d", c[i] / 10, c[i] % 10)
2.2.2 代码截图
2.2.3 请说明和超星视频做法区别,各自优缺点。
该题我是依次求行与列的最大的位置,与列的最小值的位置
并用两个数组来保存最大值与最小值的行与列的位置,其中行数*10+列
则用两个数组比较,如果两个数组中有相同的数,那么则有鞍点
超星中老师是用先找出列的最小值然后判断该值是否为行最大值
我的方法如果矩阵数较大,容易会不同行不同列保存的数相同
2.3 切分表达式
2.2.1 伪代码
按照pta给出的提示,分别用判断语句用来判别这些特殊情况
for 0 to s[i]!='\n' 输出该字符 if(开始时该字符不为-或者'+') else if (该字为'-'且上一字符为'(') else if (下一个字符为小数点或者该字符为小数点) else if(前面后面都不是数字) 则输出换行 end if end for
2.2.2 代码截图
2.3.3 请说明和超星视频做法区别,各自优缺点。
超星老师是将其分装成一个函数,且判断的条件较为单一全面,
我将判断条件较多的整合到一起,显得代码不那么易读。
大致思路差不多。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY