単純選択法(Selection Sort)
Top -> プログラミング -> アルゴリズム(Algorithm by the C language) -> 単純選択法(Selection Sort)
1.単純選択法(Selection Sort)とは
単純選択法とは、並び替えが行われていない部分から最小値、または最大値をひとつ選び出し、ソート済みデータの最後と交換する方法です。
また、単純選択法は、安定したソートアルゴリズムではありません。この点は気をつける必要があります。
2.単純選択法(Selection Sort)の実装

1.a[0]〜a[N-1]間の最小値または最大値を選び出し、a[0]と交換する。これでa[0]が決定。
2.a[1]〜a[N-1]間の最小値または最大値を選び出し、a[1]と交換する。これでa[1]が決定。
3.これをN-1回繰り返す。(Nはソートする値の個数)

void selection_sort(int *ptr, int n) { int i, j, k; for(i=0; i<n-1; i++){ k = i; for(j=i+1; j<n; j++){ if(*(ptr+k) > *(ptr+j)){ k = j; } } swap((ptr+i), (ptr+k)); } } void swap(int *ptr1, int *ptr2) { int w; w = *ptr1; *ptr1 = *ptr2; *ptr2 = w; }


また、
if(*(ptr+k) > *(ptr+j)){

if(*(ptr+k) < *(ptr+j)){
のように、判定条件を変更すると降順になります。
今回のサンプルソースは昇順です。

以下のリンクからサンプルを閲覧又はダウンロードできます。
ダウンロード時は「対象をファイルに保存」で可能です。
(ファイル名を指定しなければならないブラウザがあります)
閲覧の時はそのまま、クリックをしてください。
サンプルはSHIFT-JISで書かれております。Linux系ではEUCに変換してお試しください。
戻る
カウンター