早教吧作业答案频道 -->其他-->
c++编程问题给定任意顺序的5个互不相同的数字,例如2,5,4,3,1。现要求通过两两交换,用最少的交换次数使数列还原为升序(1,2,3,4,5),问最少的交换次数和交换策略。用c++编程。
题目详情
c++编程问题
给定任意顺序的5个互不相同的数字,例如2,5,4,3,1。现要求通过两两交换,用最少的交换次数使数列还原为升序(1,2,3,4,5),问最少的交换次数和交换策略。用c++编程。
给定任意顺序的5个互不相同的数字,例如2,5,4,3,1。现要求通过两两交换,用最少的交换次数使数列还原为升序(1,2,3,4,5),问最少的交换次数和交换策略。用c++编程。
▼优质解答
答案和解析
#include
using namespace std;
int main()
{
int a[5];
int b,c=0,j,k=0;
for(b=0;b<5;++b)
cin>>a[b];
for(int i=0;i<4;++i)
{ c=i;
for(j=i+1;j<5;++j)
if(a[c]>a[j])
c=j;
if(a[c] {int t=a[c];
a[c]=a[i];
a[i]=t;
++k;
}}
cout< for(int i=0;i<5;++i)
cout< return 0;
}
策略:第一个数与后面的数逐个比较,遇到更小的 记下下标,第一轮比较四次,用第一个和最小的交换。
第二个数与后面的数逐个比较,遇到更小的 记下下标,第二轮比较三次,用第二个和最小的交换
以此类推实际交换次数不超过4次
楼上的程序每次遇到小的都交换一次,并非最少次数,楼上的只要换组初始数据就是错误答案
using namespace std;
int main()
{
int a[5];
int b,c=0,j,k=0;
for(b=0;b<5;++b)
cin>>a[b];
for(int i=0;i<4;++i)
{ c=i;
for(j=i+1;j<5;++j)
if(a[c]>a[j])
c=j;
if(a[c] {int t=a[c];
a[c]=a[i];
a[i]=t;
++k;
}}
cout< for(int i=0;i<5;++i)
cout< return 0;
}
策略:第一个数与后面的数逐个比较,遇到更小的 记下下标,第一轮比较四次,用第一个和最小的交换。
第二个数与后面的数逐个比较,遇到更小的 记下下标,第二轮比较三次,用第二个和最小的交换
以此类推实际交换次数不超过4次
楼上的程序每次遇到小的都交换一次,并非最少次数,楼上的只要换组初始数据就是错误答案
看了c++编程问题给定任意顺序的5...的网友还看了以下:
局域网交换机的帧交换需要查询A 端口号 /MAC 地址映射表B 端口号 /IP 地址映射表C 端口号 2020-05-23 …
局域网交换机的帧交换需要查询______。A.端口号/MAC地址映射表B.端口号/IP地址映射表C. 2020-05-23 …
局域网交换机的帧交换需要查询()。A.端口号/MAC地址映射表B.端口号/IP地址映射表C.端口号/ 2020-05-23 …
如下图所示,有4台Catelyst3548交换机,要求Switch.1和Switch-3只能从Swi 2020-05-23 …
结点按层次进行连接,信息交换主要在上、下结点之间进行,相邻及同层结点之间一般不进行数据交换或 2020-05-24 …
电路交换主要工作在物理层,传输单位是_( )_;而分组交换工作于_( )_,他采用_( )_方式从源 2020-05-26 …
帮忙讲一下题计算机网络题10、试在下列条件下比较电路交换和分组交换。要传送的报文共x(bit),从 2020-07-12 …
现代计算机网络采用的交换方式主要是。1.电路交换2.报文交换3.基于虚电路的分组交换4.基于数据报的 2020-12-01 …
某数组有10个元素,元素值有键盘输入,要求将前5个元素于后5个元素对换,即第一个于第10个交换,2与 2021-01-07 …
人体内的气体交换包括和两个过程,气体交换主要是通过气体的作用实现的。 2021-01-07 …