HOME»基本情報技術者試験掲示板»選択ソートについて
投稿する

選択ソートについて [5374]

 すずらんさん(No.1) 
とある問題集を行っているのですが、選択ソートの例のプログラムとして
前提:配列の要素番号は0から

for(iを1からdataの要素数-2まで1ずつ増やす)
min←1
  for (jをi+1からdataの要素数-1まで1ずつ増やす)
    if(data[min] > data[j])
      min←j
    endif
  endfor
  data←minとjの入れ替えの関数を使用
endfor
return data

という風になっていたのですが、
外ループの部分、for(iを1からdataの要素数-2まで1ずつ増やす)
だと配列要素番号0の部分が並び変えられないのでは?と思っています。
for(iを0からdataの要素数-2まで1ずつ増やす)が正しいと考えたのですが、どなたか教えて下さると助かります。
2024.03.28 15:37
 すずらんさん(No.2) 
すみません。
min←1
は間違いで
min←i  です。
2024.03.28 15:40
jjon-comさん(No.3) 
FE ゴールドマイスター
要素が0番目から始まる配列dataであるなら
for(iを0からdataの要素数-2まで1ずつ増やす)
  min←i
  for (jをi+1からdataの要素数-1まで1ずつ増やす)

要素が1番目から始まる配列dataであるなら
for(iを1からdataの要素数-1まで1ずつ増やす)
  min←i
  for (jをi+1からdataの要素数まで1ずつ増やす)

です。
2024.03.28 16:38
 すずらんさん(No.4) 
jjon-comさん
ご回答ありがとうございます。
参考書にはこのように記載されていたため、困っておりました。
納得しました。ありがとうございます。
2024.03.28 17:06
返信投稿用フォームスパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop