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
答案 0 :(得分:0)
你可以这样试试。
4 4 5 5 6 6 7
ith
元素复制到输出数组,同时递增j和i 这样就可以了。
int[] arr = {4,4,5,5,6,6,7};
int out[]= {0}; // or may be some size
int i=1;
out[0] = arr[0];
int j=0;
while(i<arr_length){
if(arr[i]!=out[j]){
out[++j]=arr[i];
}
i++;
}
for(int k=0;k<out_length;k++){
printf("%d,",out[k]);
}
答案 1 :(得分:0)
void sort_int_array(int A[], int n) {
int i, j, k, O[n];
for(k=i=0; i<n; ++i){
for(j=i+1;j<n;++j){
if(A[j]<A[i])
int_swap(&A[j],&A[i]);
}
if(i==0 || O[k-1] < A[i])
O[k++]=A[i];
}
printf("DEBUG:");
for(i=0;i<k;++i)
printf("%d ", O[i]);
printf("\n");
}