文章
34
粉丝
179
获赞
13
访问
199.0k
一刷,这种做法不太好,存在以下几个问题:
1、先把最大值最小值及其坐标找到后,在进行交换时,可能交换的恰是最小值与最大值,这样原本的下标就乱了,最终的结果也就错了。
2、本题做的时候还发现一个问题,就是开始传入数字到int[]里面,但是strlen()是不能用来求其长度的,strlen()适用于char[],且本题会传入n,直接用n即可
改进:
1、先找最小值,交换后再找最大值,再交换,就不会出现上面的问题
2、交换部分用一个swap函数
#include <iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int a[20];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
int min=a[0];
int max=a[0];
int minpos=0;
int maxpos=0;
int temp1=0;
int temp2=0;
for(int i=0;i<n;i++){
if(a[i]>max){
max=a[i];
maxpos=i;
}
if(a[i]<min){
min=a[i];
minpos=i;
}
}
temp1=a[0];
if(temp1==max)
maxpos=minpos;
a[0]=min;
a[minpos]=temp1;
temp2=a[n-1];
a[n-1]=max;
a[maxpos]=temp2;
for(int i=0;i<n;i++){
if(...
登录后发布评论
暂无评论,来抢沙发