Je dois écrire une fonction pour trier un tableau dans le tas. Cette fonction devrait faire une copie du tableau, trier la copie et retourner un pointeur vers la copie triée. J'ai essayé qsort()
mais j'ai une sortie étrange. Je suis sûr que cela a quelque chose à voir avec le pointeur mais je n'arrive toujours pas à le comprendre.Tri du tableau dans le tas
Ceci est mon code à ce jour:
int cmpfunc(const void * a, const void * b)
{
return (*(int*)a - *(int*)b);
}
int sorted_copy(int* list[], size_t s)
{
int aList[s];
memcpy(aList,list,s);
printf("Array was copied successfuly to aList[] array\n\n");
printf("Before sorting the list is: \n");
for(int i = 0; i < s; i++)
printf("%d\n", aList[i]);
qsort(aList, s, sizeof(int), cmpfunc);
printf("After sorting the list is: \n");
for(int i = 0; i < s; i++)
{
printf("%d\n", aList[i]);
}
return *aList;
}
int main()
{
int list[10] = {4, 1, 2, 7, 3, 5, 6, 0, 8, 9};
sorted_copy(list,sizeof(list));
return 0;
}
Une ce la sortie que je reçois
Array was copied successfuly to aList[] array
Before sorting the list is:
4
1
2
7
3
5
6
0
8
9
0
0
0
0
3
0
0
0
268501009
32762
4199840
0
-1407817721
32762
12846904
0
1324151619
0
8
0
176
0
6487584
0
4199972
0
4200528
0
-1434081178
32762
After sorting the list is:
-1434081178
-1407817721
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
2
3
3
4
5
6
7
8
8
9
176
32762
32762
32762
4199840
4199972
4200528
6487584
12846904
268501009
1324151619
Process returned 0 (0x0) execution time : 0.281 s
Press any key to continue.
Déposer un tableau de pointeur vers '' dans un tableau de 'int' n'est pas un bon début pour tout ce que vous essayez de faire. En outre, vous ne copiez pas réellement à la capacité de toute façon. Le troisième argument de 'memcpy' est une taille en * octets *; pas un nombre d'éléments. Et enfin, "renvoyer une copie triée" va impliquer soit un paramètre in/out supplémentaire, soit un tableau statique, soit une allocation dynamique. – WhozCraig
corrige comme [this] (https://ideone.com/m9zdtF) – BLUEPIXY
vous renvoyez une adresse d'une variable locale qui supprime après la fermeture de funcion – bobra