VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: myjinx

C++高手进 帮忙给个答案

[复制链接]

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-6-11 13:00:01 | 显示全部楼层
记录最大值和最小值的位置,然后和头尾交换
只处理最大跟最小的如何写?
楼上的大哥,先谢谢了。
回复

使用道具 举报

0

主题

8

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-6-12 10:00:01 | 显示全部楼层
不需要冒泡排序。遍历两次即可,第一次找到最大的,和第一个元素交换,第二次找到最小的,和最后一个元素交换,
回复

使用道具 举报

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-6-12 13:30:01 | 显示全部楼层
55555555555555
我要代码,急用!!!
上面有位大哥就已经把降序的代码告诉我了。
回复

使用道具 举报

0

主题

8

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-6-13 10:15:01 | 显示全部楼层
也可以一次遍历,两个一起找
int mint=a[0],maxt = a[0];
for(int i = 0; i < sizeof(a)/sizeof(int); ++i)
{
   if(maxt < a[i])
     //.......;
   if(mint > a[i])
     //........;
}
回复

使用道具 举报

0

主题

8

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-6-13 21:00:01 | 显示全部楼层
交换两者,。
然后到最后把maxt给第一个,mint给最后一个,就ok了,
你总得 自己写一点把?
回复

使用道具 举报

0

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-6-14 10:30:01 | 显示全部楼层
int maxIndex=0;//最大值位置
int minIndex=0;//最小值位置
int maxArray=array[0];
int minArray=array[0];

for(int i=1;i<len;i++)
{
  if(maxArray<array[i])
  {
   maxArray=array[i];
   maxIndex=i;
  }
  if(minArray>array[i])
  {
   minArray=array[i];
   mixIndex=i;
  }
}

int tmpInt=array[0];
array[0]=array[maxIndex];
array[maxIndex]=tmpInt;

tmpInt=array[len-1];
array[len-1]=array[minIndex];
array[maxIndex]=tmpInt;

回复

使用道具 举报

0

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-6-14 11:00:01 | 显示全部楼层
呵呵,你肯定是新手了
上面的两行是:
if(maxt<a[i])
  maxt = a[i];
if(mint>a[i])
  mint = a[i];

最后还要把maxt赋值给a[0],mint赋值给a[9]
回复

使用道具 举报

0

主题

8

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-6-14 20:30:01 | 显示全部楼层
还是交换好,这样就破坏了数组本身了
回复

使用道具 举报

0

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-6-15 07:00:01 | 显示全部楼层
不好意思,上面的写错了
不仅仅只是赋值,还得交换
回复

使用道具 举报

0

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-6-15 16:00:02 | 显示全部楼层
int maxIndex=0;//最大值位置
int minIndex=0;//最小值位置
int maxArray=array[0];
int minArray=array[0];

for(int i=1;i<len;i++)
{
  if(maxArray<array[i])
  {
   maxArray=array[i];
   maxIndex=i;
  }
  if(minArray>array[i])
  {
   minArray=array[i];
   mixIndex=i;
  }
}

int tmpInt=array[0];
array[0]=array[maxIndex];
array[maxIndex]=tmpInt;

tmpInt=array[len-1];
array[len-1]=array[minIndex];
array[minIndex]=tmpInt;//此处笔误,已更改!!!

思路就是记下最大最小值的位置,最后做交换即可

这个符合你的意思吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表