newuser 发表于 2010-4-8 16:57:31

将随机数插入到随机产生的有序数组中的问题?[已解决]

本帖最后由 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,"插入数据后的有序数组")

newuser 发表于 2010-4-9 09:23:16

回复 1# newuser

恳请帮助讲解以上代码中的$i=$N-2 $i<>$N-2的条件判断

newuser 发表于 2010-4-9 10:35:00

回复 1# newuser

希望不要沉底,请大家帮助详解,再线等待中!

newuser 发表于 2010-4-9 14:01:49

回复 1# newuser

再顶不要沉,等待回答...

大绯狼 发表于 2010-4-9 14:57:29

有个函数叫_ArrayInsert

newuser 发表于 2010-4-9 17:09:13

回复 5# 大绯狼

我目前想搞懂以上的代码,在 进入更深层次的研究,谢谢!能帮助解答我的疑惑吗?谢谢!

newuser 发表于 2010-4-10 10:33:18

回复 6# newuser
不要拍砖,坚持等到回答...

大绯狼 发表于 2010-4-10 11:25:27

本帖最后由 大绯狼 于 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)

追梦虎 发表于 2010-4-27 16:09:24

群主是怎么理解的,说下,我也被这问题困惑很久了。
页: [1]
查看完整版本: 将随机数插入到随机产生的有序数组中的问题?[已解决]