0
我不明白爲什麼原始數組在排序函數調用後排序,即使我使用了一個替代數組。 我首先複製了所有元素以避免此問題。 任何澄清將受到歡迎。謝謝。爲什麼原始數組也排序?
#include <stdio.h>
void array_sort(int* t, int n)
{
int min, index;
int* p;
for (int i = 0; i < n; i++) { //to avoid changing the original array
*(p + i) = *(t + i);
}
for (int i = 0; i < n - 1; i++) {
min = *(p + i);
index = i;
for (int j = i + 1; j < n; j++) {
if (*(p + j) < min) {
min = *(p + j);
index = j;
}
}
*(p + index) = *(p + i);
*(p + i) = min;
}
for (int i = 0; i < n; i++)
printf("%i\t", *(p + i));
}
int main(void)
{
printf("Enter number of elements to be sorted : ");
int n;
scanf("%i", &n);
printf("\nEnter the numbers : ");
int p[n];
for (int i = 0; i < n; i++) {
scanf("%i", p + i);
}
array_sort(p, n);
printf("\n");
for (int i = 0; i < n; i++) { //check if original array is unsorted
printf("%i\t", *(p + i));
}
return 0;
}
'int * p; for(int i = 0; i'int p [n]'? –
Stargateur
這個問題的「排序」部分是不相關的。您可能想要縮小它,以便您只是詢問如何製作數組的副本。 – 4castle
你從未在'array_sort'中分配過第二個數組。 – user2357112