selectSort 選択法によるソート
void selectSort(DATA *data, int nmem, int asdes);
typedef struct { int key; /* 比較のキーとなるフィールド */ int info; /* その他のフィールド */ } DATA; data (入出力)データレコードの配列 nmem (入力) レコード配列の大きさ asdes (入力) 昇順・降順別、0:昇順, 1:降順
なし
void selectSort(DATA *data, int nmem, int asdes){ int i, j, k; static void swap(); for (i = 0; i < nmem - 1; i++) { k = i; for (j = i + 1; j < nmem; j++) if (asdes == 0) { if (data[j].key < data[k].key) k = j; } else { if (data[j].key > data[k].key) k = j; } if (k != i)
swap(&data[k], &data[i]); } } static void swap(DATA *a, DATA *b){ DATA t; t.key = a->key; t.info = a->info; a->key = b->key; a->info = b->info; b->key = t.key; b->info = t.info; }
利用するには、データ構造を実際の問題に合わせて修正する必要がある。