syat #6143(2008/04/04 23:10 GMT) [ BASIC ] Rating0/0=0.00
バブルソートってこんな感じだったかな。
see: バブルソート - Wikipedia
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
100 DATANUM = 5 ' データ個数 110 'データX、データY、並び替え配列 120 dim x(DATANUM), y(DATANUM), idx(DATANUM) 130 '関数:データ0と1が辞書順に整列してない場合に真 140 def fnNoSort0(x0,y0,x1,y1) = (x0 > x1) or ((x0 <= x1) and (y0 > y1)) 150 '関数:データ0と1が距離順に整列してない場合に真 160 def fnNoSort1(x0,y0,x1,y1) = (x0 * x0 + y0 * y0 ) > (x1 * x1 + y1 * y1) 170 '関数:整列後のX, Y を取得する 180 def fnX(n) = dx(idx(n)) 190 def fnY(n) = dy(idx(n)) 200 'メイン 210 gosub *DataLoad 220 mode = 0 : gosub *Sort : print "辞書順" : gosub *PrintData 230 mode = 1 : gosub *Sort : print "距離順" : gosub *PrintData 240 end 250 'データロード 260 *DataLoad 270 for i = 1 to DATANUM 280 read dx(i), dy(i) 290 idx(i) = i 300 next i 310 return 320 'データ表示 330 *PrintData 340 for i = 1 to DATANUM 350 print fnX(i), fnY(i) 360 next i 370 return 380 'ソート 390 *Sort 400 for i = 1 to DATANUM - 1 410 for j = i + 1 to DATANUM 420 if mode = 0 and fnNoSort0(fnX(i),fnY(i),fnX(j),fnY(j)) then *doSwap 430 if mode = 1 and fnNoSort1(fnX(i),fnY(i),fnX(j),fnY(j)) then *doSwap 440 goto *goNext 450 *doSwap 460 swap idx(i), idx(j) 470 *goNext 480 next j 490 next i 500 return 510 'データ 520 data 1,2, 3,4, 1,3, 2,4, 1,8
Rating0/0=0.00-0+
[ reply ]
syat
#6143()
[
BASIC
]
Rating0/0=0.00
バブルソートってこんな感じだったかな。
see: バブルソート - Wikipedia
Rating0/0=0.00-0+
[ reply ]