単純選択法(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はソートする値の個数)

*ptrはint型変数の配列への先頭ポインタ、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で書かれております。

閲覧またはダウンロード
戻る
カウンター