将随机数插入到随机产生的有序数组中的问题?[已解决]
本帖最后由 newuser 于 2010-4-23 09:49 编辑2个小时,我都蒙了,插入的条件我怎么越琢磨越糊涂???
$i=$N-2就说明新产生的随机数大于随机数组中所有数;
不等,则说明小于随机数组中所有数?我理解不上去啊!
#include <array.au3>
Const $N=12 ;数组下标,因为要插入一个新元素,所以下标从11变为12
Dim $i,$RandomNumArray[$N],$Num
;下面的For语句用来随机取10个数
For $i=1To $N-2
$RandomNumArray[$i]=Random(1,10,1)
Next
;下面的For语句用来对随机数组进行从小到大的排序
For $i=1 To $N-3
For $j=$i+1To $N-2
If $RandomNumArray[$j]<$RandomNumArray[$i] Then
$t=$RandomNumArray[$i]
$RandomNumArray[$i]=$RandomNumArray[$j]
$RandomNumArray[$j]=$t
EndIf
Next
Next
_ArrayDisplay($RandomNumArray,"显示随机有序数组")
$Num=Random(1,10,1) ;新生成1个随机数用于插入上面生成的有序数组中去
MsgBox(0,"插入新元素","将要插入数据"&$Num&"到刚才的数组中")
;下面For语句的目的应该是遍历数组中所有元素在与新生成的$Num对比大小后再插入到合适位置
;以下是我不理解的 ?
;$i=$N-2 ,$Num就大于有序数组中的所有元素,否则就小于其中所以元素?
;但如果这么理解$RadomArray[$i]=$RadomArray[$N-2]就好理解些,随机数组中的元素都相等?但此时$Num为什么不能小于所有取得的随机元素?
For $i=1 To $N-2 ;开始For遍历
If $i<>$N-2 Then
If ($Num>=$RandomNumArray[$i] And $Num<$RandomNumArray[$i+1]) _
Or ($i=1 And $Num<$RandomNumArray[$i+1]) Then ;这个条件看不懂?
For $j=$N-1 To $i+2 Step -1;还看不懂?
$RandomNumArray[$j]=$RandomNumArray[$j-1] ;如果插入一个新元素,往后挪
Next
$RandomNumArray[$i+1]=$Num
ExitLoop
EndIf
Else
$RandomNumArray[$i+1]=$Num
ExitLoop
EndIf
Next
_ArrayDisplay($RandomNumArray,"插入数据后的有序数组") 回复 1# newuser
恳请帮助讲解以上代码中的$i=$N-2 $i<>$N-2的条件判断 回复 1# newuser
希望不要沉底,请大家帮助详解,再线等待中! 回复 1# newuser
再顶不要沉,等待回答... 有个函数叫_ArrayInsert 回复 5# 大绯狼
我目前想搞懂以上的代码,在 进入更深层次的研究,谢谢!能帮助解答我的疑惑吗?谢谢! 回复 6# newuser
不要拍砖,坚持等到回答... 本帖最后由 大绯狼 于 2010-4-10 12:52 编辑
#include <Array.au3>
Dim $Rnum
For $i = 0 To 9
$Rnum[$i] =Random(0,100,1)
Next
_ArraySort($Rnum);排序我就不排了
_ArrayDisplay($Rnum)
$ins = Random(0,100,1)
If $ins > $Rnum Then
ReDim $Rnum
$Rnum = $ins
Else
For $i = 0 To 9
If $Rnum[$i] > $ins Then
ReDim $Rnum
For $j = UBound($Rnum) To $i + 1 Step - 1
If $j = 1 Then ExitLoop
$Rnum[$j - 1] = $Rnum[$j - 2]
Next
$Rnum[$i] = $ins
ExitLoop
EndIf
Next
EndIf
_ArrayDisplay($Rnum) 群主是怎么理解的,说下,我也被这问题困惑很久了。
页:
[1]