随机产生三个数组,将前两个数组按由小到大顺序排序,然后将它们合并到第四个数组中(合并后的数组有序)
答案:2 悬赏:80
解决时间 2021-02-13 03:42
- 提问者网友:余味
- 2021-02-13 00:14
随机产生三个数组,将前两个数组按由小到大顺序排序,然后将它们合并到第四个数组中(合并后的数组有序)
最佳答案
- 二级知识专家网友:情战凌云蔡小葵
- 2021-02-13 00:48
最少交换次数肯定是与87654321不对应的数的个数再减可以形成的环的个数(因为每个环的最后一个数都不用排序的,前面都排好了,最后一个自然就序),此数组有两个环,所以是5次。hint:环指的是例如上面数组中的165三个数虽然都不在自己应该在的位置,但他们占据了排好序后1,6,5应该占据的位置,所以可以抽象成一个环,环内换顺序就行了。同样3,2,4,8也是一个环,还有,对应好的7也可以看做是一个环,所以是8-1-1-1=5交换过程有很多:eg:交换38变成87162435交换16变成87612435交换15变成87652431交换24变成87654231交换23变成87654321注意是环内交换
全部回答
- 1楼网友:厭世為王
- 2021-02-13 01:21
dim a(1 to 100) as integer
dim b(1 to 100) as integer
dim c(1 to 200) as integer
for i=1 to 10
a(i)=int(rnd()*90+10) '随机产生a数组
b(i)=int(rnd()*90+10) '随机产生b数组
next i
for i=1 to 100
c(i)=a(i) '合并a数组
next i
for i=1 to 100
c(i+100)=b(i) '合并b数组
next i
for i=200 to 2 step -1 '排序
for j=1 to i-1
if(c(j)>c(j+1)) then
t=c(j)
c(j)=c(j+1)
c(j+1)=t
end if
next j
next i
所有的输出我都没写 自己来吧 呵呵
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯