【发布时间】:2020-03-12 19:26:03
【问题描述】:
我遇到了问题。我需要以不同的方式对数组进行排序。问题是,在我第一次排序后,我的原始数组保持排序。我尝试将原始数组复制到另一个数组,但它仍然是排序的。我的代码如下:
void printArray(int ** array, int n){
int i;
for(i = 0; i < n; i++){
printf(" %d ", (*array)[i]);
}
}
int main(){
int *array, n, number, i, j;
printf("\nIntroduce the size of the array:");
scanf("%d", &n);
array = (int*)malloc(n * sizeof(int));
for(i = 0; i < n; i++){
number = rand() % 1000 + 1;
array[i] = number;
}
printf("\nUnsorted array:");
printArray(&array, n);
//bubble sort
int *array2, aux;
array2 = array;
for (i = 0; i < n-1; i++){
for (j = 0; j < n-1; j++){
if(array2[j] > array2[j+1]){
aux = array2[j];
array2[j] = array2[j+1];
array2[j+1] = aux;
}
}
}
printf("\nSorted array:");
printArray(&array2, n);
//The problem is in here, if I print the original array, it's already sorted
printf("\nUnsorted original array:");
printArray(&array, n);
}
【问题讨论】:
-
array2 = array;这不会复制数组。这复制了一个指针。指针不是数组。 -
是的,我有需要用指针来完成的指令,我真的不知道该怎么做。