'----------------------------------- ' 整列法3 ' クイック整列法 '----------------------------------- Public D$(1000),ND, Wait ' D$(i) は i番目データの値 ND = 250 :'データ数 :これを変えるとグラフが乱れます。 Wait=10 TScreen(400,150) IBPosition(0,100) Call MakeData 'Call PrintData Call GraphInit input "Press any key " ,a$ Call QSort(1,ND) 'Call PrintData End '----------------------------------- Sub MakeData Randomize for i=1 to ND DL = Fix(Rnd * 7)+1 D$(i)="" for j=1 to DL C = Fix(Rnd * 26) D$(i) = D$(i) + Chr$(Asc("a")+C) next j next i End Sub Sub QSort(left,right) if left < right then p = Partition(left, right) Call QSort(p+1, right) Call QSort(left, p-1) end if End Sub Function Partition(left,right) Call Change(left, Int((left+right)/2)) last = left for i= left + 1 to right if (D$(i) < D$(left)) then last = last + 1 Call Change(last,i) end if next i Call Change(left,last) Partition = last End Function Sub Change(i,j) :'D$(i) と D$(j) を交換する TD$ = D$(j) D$(j) = D$(i) D$(i) = TD$ Call GDataWrite(i) Call GDataWrite(j) End Sub Sub PrintData for i=1 to ND Print D$(i) next i End Sub Sub GraphInit BackColor = "#EEFFEE" GWPosition(100,200) Gscreen(800,500) window (0,0)-(9,30) GFontSize = 10 for i=1 to ND Call GDataWrite(i) next i End Sub Sub GDataWrite(i) GLocate (((i-1) \ 30) +0.2 , (i-1) mod 30) ForeColor = "#EEFFEE" GPrint "BBBBBBBB" ForeColor = "#000000" GPrint D$(i) End Sub