void sort_int_array(int A[], int n) {
int i, j, h, k, O[n];
/* assume that A[0] to A[n-1] have valid values */
for (i=1; i<n; i++) {
/* swap A[i] left into correct position */
for (j=i-1; j>=0 && A[j+1] <= A[j]; j--) {
int_swap(&A[j], &A[j+1]);
for (k=0; k<n; k++) {
for (h = 0; h < k; h++) {
if (A[k] == O[h]) {
break;
}
else {
O[k] = A[k];
}
}
}
}
}
}
ソートされた配列から別の配列に個別の値のみを書き込もうとしています。関数の最初の部分は配列を並べ替えますが、それを新しい配列に書き込むと、並べ替えられた配列が返され、コピーは削除されません。
例えば。入力:4 5 6 7 6 5 4.
出力:4 4 5 5 6 6 7.
必要な出力:4 5 6 7