挿入ソートを次のように実装します。
void insertion_sort(int * list, int len ) {
int i, j;
for(j=1; j<len; j++) {
int key = list[j];
i = j - 1;
while(i >= 0 && list[i] > key) {
list[i + 1] = list[i];
i = i - 1;
}
list[i + 1] = key;
}
}
この関数を次のように呼び出すと:
int list[] = {5, 6, 4, 3, 1, 2};
insertion_sort(list, sizeof(list)/sizeof(list[0]));
それは正常に動作します。しかし、リストを次のように宣言すると:
int * list = {5, 6, 4, 3, 1, 2};
失敗します。ポインターの扱い方に問題があることは承知していますが、詳しく教えてください。ありがとう!