Sortowanie ze wskaznikami
Ostatnio zmodyfikowano 2015-03-19 21:02
Dizip Temat założony przez niniejszego użytkownika |
Sortowanie ze wskaznikami » 2015-03-19 20:40:14 Zrobiłem krótki programik, ktory alokuje w pamieci n wyrazow typu int po czym trzeba je wpisac a programik je posortuje - swietne i banalne. Teraz moje kluczowe pytanie - Co ja sortuje? Czy ja sortuje wskazniki do pamieci? Czy ja kopiuje wielokrotnie dane? Czy taki sposob jest 'optymalny'? Chodzi mi o jak najmniejsze zuzycie pamieci. Jestem początkującym we wskaznikach i zalezy mi bym sortował tylko adresy bez kopiowania ich wartosci. Oto kod: #include <stdio.h> #include <stdlib.h>
void zamien(int *a, int *b) { int temp=*a;*a=*b;*b=temp; }
void sortuj(int * l,int rozmiar) { int i,j; for(i=rozmiar-1;i>0;i--) for(j=0;j<i;j++) if(l[j]>l[j+1]) zamien(&l[j],&l[j+1]); }
int main() { int n,i=0; scanf("%d",&n); int * tab = (int *) malloc(n*sizeof(int));
while(i<n && scanf("%d",&tab[i])==1) ++i;
sortuj(tab,n);
for(i=0;i<n;i++) { printf("%2d ",tab[i]); } free(tab); return 0; }
|
|
pekfos |
» 2015-03-19 20:57:37 Chodzi mi o jak najmniejsze zuzycie pamieci. [..] zalezy mi bym sortował tylko adresy bez kopiowania ich wartosci. |
To się nie dodaje. Sortowanie adresów to w tym przypadku dwa razy większe zużycie pamięci. |
|
Dizip Temat założony przez niniejszego użytkownika |
» 2015-03-19 21:00:56 Czyli tak jak zrobiłem jest najlepszą możliwą opcją? ( pomijam już sam algorytm sortowania ) |
|
pekfos |
» 2015-03-19 21:02:52 Możliwe. |
|
« 1 » |