<选择法排序 >
https://pintia.cn/problem-sets/1107465434997153792/problems/1107465486259937281
目标:对选择排序法有一个具体的学习和了解。
这次作业主要是用选择排序法编写一段代码,所以学会这个题目也对选择排序法有了一定的认识。
参考文献:《C语言程序设计》
#include<stdio.h>
int main()
{
int i,max,k,n,temp;
int a[10];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(k=0;k<n-1;k++){
max=k;
for(i=k+1;i<n;i++){
if(a[i]>a[max])
max=i;
}
temp=a[max];
a[max]=a[k];
a[k]=temp;
}
printf("%d",a[0]);
for(i=1;i<n;i++)
printf(" %d",a[i]);
return 0;
}
2.设计思路
3.遇到的问题
问题一:主要是对于空格的输出,理解上有误差,导致格式错误。
解决方法:询问室友,解决问题。
4.运行截图
<找鞍点>
https://pintia.cn/problem-sets/1107465434997153792/problems/1107465486259937282
目标:学习找矩阵中行最大,列最小的数。
这个作业找鞍点,即我所学目标。
参考文献:《C语言程序设计》
1.实验代码
#include<stdio.h>
int main()
{
int i,p,j,n,y,k,flag=0;
int a[6][6];
scanf("%d",&n);
for(i=0;i<n;i++){
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
k=0;p=0;
for(i=0;i<n;i++){
y=i;
for(p=0;p<n;p++){
if(a[i][k]<=a[i][p])
k=p;
}
for(j=0;j<n;j++){
if(a[y][k]>a[j][k]){
y=j;
break;
}
}
if(i==y){
flag=1;
break;
}
}
if(flag==1)
printf("%d %d",i,k);
else
printf("NONE");
return 0;
}
2.设计思路
3.遇到问题
问题一:主要是在编写时比较行、列后思绪较为混乱,没有对比是否为一个数。
解决问题:上网查询,和室友讨论。
4.运行截图
<冒泡法排序>
https://pintia.cn/problem-sets/1107461872653131776/problems/1107464690202009600
目标:在学习选择排序法后,再学习冒泡排序法。
这个作业是用冒泡排序法把数组按从大到小输出。
主要是在百度上学习。
1.实验代码
#include<stdio.h>
int main()
{
int i,j,n,a[10],temp;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++){
for(j=0;j<n-i-1;j++){
if(a[j]<a[j+1]){
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
}
printf("%d",a[0]);
for(i=1;i<n;i++)
printf(" %d",a[i]);
return 0;
}
2.设计思路
3.遇到问题
问题一:主要还是空格处i的取值取错,导致结果错误。
解决问题:询问室友。
4.运行截图
心得:主要是细节上的问题,以后还是要仔细做题。
时间:一个下午加二个小时。
学习感悟:这周主要学习了选择排序法、冒泡排序法、找鞍点、字符串的查找等等。学到了排序法和字符串的一些知识。
难点主要是二中排序法一开始并未学到精髓,思维逻辑混乱。
请教室友,慢慢理清逻辑。