Program sortujący w C

0

Nie znalazłem podobnego tematu, więc napiszę o co mi chodzi.
Program powinien sortować ciąg liczb całkowitych. Jak powinien wyglądać wektor k[] dla i=4 po poleceniu /_/

Prosiłbym o dokładne wyjaśnienie, ponieważ chciałbym to dobrze zrozumieć. Jeśli coś takiego było to przepraszam.



#include <stdio.h>
#include <stdlib.h>
#define M 8
#define N 7

void sortuj(int a[]){
	int i, j=0, k[N] = {0,0,0,0,0,0,0};
	
	for(i=0; i<M; i++) k[a[i]]++;
	for(i=0; i<N; i++)
	/*_*/
	if((k[i])--) a[j++]=i--;
}



int main() {
	int a;
	a[M]={4,6,0,5,3,4,2,1};
	sortuj (a);
}
0

A nie mozesz tego posortowac jakas normalna metoda?

0

Odpal debuger to wszystkiego sie dowiesz krok po kroku.

Tal, btw. ten program ma dzialac tylko na tym zestawie danych?

0

Nie, ogólnie powinien działać, ale wtedy zmienia się wektor. Ale znaleźć wektor dla tego zestawu danych trzeba oczywiście :)

0

Nazywanie zmiennych i,j,k baaaaardzo często się mści:

#include <stdio.h>
#include <stdlib.h>
#define N 7
 
void sortuj(int a[],int M)
  {
   int i,j,k[N]={0}; 
   for(i=0;i<M;++i) ++k[a[i]];
   for(j=i=0;i<N;++i) while(k[i]--) a[j++]=i;
  }

int main()
  {
   int i,a[]={4,6,0,5,3,4,2,1};
   sortuj(a,sizeof(a)/sizeof(*a));
   for(i=0;i<sizeof(a)/sizeof(*a);++i) printf(" %d",a[i]);
   return 0;
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1