insertSort 挿入法によるソート
void insertSort(DATA *data, int nmem, int asdes);
typedef struct { int key; /* 比較のキーとなるフィールド */ int info; /* その他のフィールド */ } DATA; data (入出力)データレコードの配列 nmem (入力) レコード配列の大きさ asdes (入力) 昇順・降順別、0:昇順, 1:降順
なし
void insertSort(DATA *data, int nmem, int asdes) { int i, j, k; DATA t; for (i = 1; i < nmem; i++) { t.key = data[i].key; t.info = data[i].info; for (j = i - 1; j >= 0; j--) if (asdes == 0) { if (data[j].key > t.key) { data[j+1].key = data[j].key; data[j+1].info = data[j].info; } else break; } else { if (data[j].key < t.key) { data[j+1].key = data[j].key; data[j+1].info = data[j].info; } else break; } data[j+1].key = t.key; data[j+1].info = t.info; } }
挿入ソートは人間のよくやるソート法であり、ブリッジでカードを並べ るときにもよく使う方法である。
本関数を利用するには、データ構造を実際の問題に合わせて修正する 必要がある。