给定一个数组(有n个元素),小李通过边分段、边合并的方式将n个数据处理成一个非降序数据段(a(1)≤a(2)≤a(3)≤……≤a(n)),每一轮数据处理方法如下:
(1)查找相邻两个非降序数据段
在未处理的数据区域中,从前往后找出第一个最长非降序数据段。若该数据段后而没有元素,则本轮处理完毕;否则在第1个数据段的后面,从前往后找出数组中第二个最长非降序数据段。
(2)合并两个数据段
借助数组tmp,将查找到的两个相邻数据段合并成一个非降序数据段,然后将合并后的数据依次存回到原数组中。
(3)若数组中还有未处理的数据,则重复(1)(2)步骤。
每一轮数据处理完毕后,重新从数组第1个数据开始进行下一轮处理。若检测到某一轮没有合并处理,则说明n个数据已构成非降序数据段,数据处理结束。

(1)根据上述描述,若数组各元素为“3,9,7,6,8,2,1,5,7,4”,则第一轮合并处理完成后,数组中的数据依次是:3,7,9,2,6,8,1,4,5,73,7,9,2,6,8,1,4,5,7(用“,”间隔)。
(2)实现上述功能的VB程序如下,请在横线处填入合适代码。
Const n As Integer=10
Dim a(I To n+5)As integer
Dim tmp(I To n+5)As Integer
Private Sub Form Load
′读取n个整数保存到数组a中,并在文本框 TextI中显示,代码略
End sub
Function Position( low As Integer) As integer
Dim i As Integer
For i-low Ton-1
If①a(i)>a(i+1)a(i)>a(i+1)Then Exit For
Next i
Position-=i
End Function
Function Merged As Boolean
Dim i As Integer,flag As Boolean,pI As Integer.p2 As Integer
Dim low I As Integer,highI As Integer,high2 As Integer
flag False:lowl=1
Do While low I<n
highl-Position(lowD)
If highI-n Then Exit Do Else flag True
high2-Position(highl+1)
pl-lowl:p2-highl+I
Do while②p1<=high1Orp2<=high2或i<=high2p1<=high1Orp2<=high2或i<=high2
If p2>high2 Or pl c-highl And a(pl)<a(p2)Then
tmp(i)a(p2):pl=pl+1
tmp-a(p2):p2-p2+1
End If
i=i+1
Loop
For i=low I To high2
a(0)=tmp(o)
Next i
③i=high2+1i=high2+1
Loop
Merge=fIng
End Function
Private Sub Commandl _Click( )
Do While True
Ir Not Merge( ) Then Exit Do
′在列表框List1中输出这一轮合并后的数据,代码略
Loop
End sub
【考点】编辑事件处理过程的代码.
【答案】3,7,9,2,6,8,1,4,5,7;a(i)>a(i+1);p1<=high1Orp2<=high2或i<=high2;i=high2+1
【解答】
【点评】
声明:本试题解析著作权属菁优网所有,未经书面同意,不得复制发布。
发布:2024/4/20 14:35:0组卷:0引用:1难度:0.3
相似题
-
1.根据AQI值判断城市的空气质量。若城市的AQI值(整数)不超过100则空气质量优良,否则空气质量有污染。当输入的AQI值为-1时则退出程序。不要更改程序结构,将题中的①②③④填入正确的语句。
city=input(“请输入城市名:”)
AQI=int(input(“请输入空气质量指数AQI的值:”))
①______ AQI!=-1:
if ②______:
print(city,“的空气质量优良。”)
③______:
print(city,“的空气质量有污染。”)
city=input(“请输入城市名:”)
AQI=④(input(“请输入空气质量指数AQI的值:”))
(1)序号①答案为
A.if
B.while
C.for
D.def
(2)序号②答案为
A.AQI>=100
B.AQI<=100
C.AQI>100
D.AQI<100
(3)序号③答案为
A.elif
B.break
C.if
D.else
(4)序号④答案为
A.int
B.float
C.str
D.else发布:2025/1/2 11:0:1组卷:0引用:0难度:0.4 -
2.一球从100米高度自由落下,每次落地后反跳回原高度的一半,再下落。编写一个C程序,求它在第10次落地时,其经过了多少米?第10次反弹多高?
发布:2025/1/2 11:0:1组卷:1引用:3难度:0.3 -
3.利用海伦公式求解三角形面积。已知a,b,c为三角形的三条边长,p为三角形的半周长,即p=(a+b+c)/2,计算此三角形面积S的海伦公式为:
。不要更改程序结构,将题中的①②③填入正确的语句。
import math#导入数学模块
def hl(a,b,c):#定义求三角形面积的函数
p=①
s=math.jye.ai(②)#sqrt用于计算算术平方根
return ③#返回面积的值
a,b,c=3,4,5#边长依次赋值
print(“此三角形的面积S为:“,hl(a,b,c))
A. (a+b+c)/2 B.p*(p-a)*(p-b)*(p-c)
C. (a+b+c)*2 D.s
(2)序号②答案为
A.(a+b+c)/2 B.p*(p-a)*(p-b)*(p-c)
C.(a+b+c)*2 D.(3+4+5)/2
(3)序号③答案为
A.p B.s
C.p*(p-a)*(p-b)*(p-c) D.0发布:2025/1/2 11:0:1组卷:0引用:0难度:0.4