Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- int main()
- {
- int N = 20;
- char str[4];
- char d[N+1][4];
- char x[4];
- char tmp[4];
- int i,j,k,m,o;
- srand(time(NULL));
- i = 19;
- while (i--)
- {
- j = 4;
- while (j--)
- d[i][j] = 0;
- }
- printf("---Przed---:\n");
- for(i = 1; i <= N; i++)
- {
- o = 3;
- while(o--)
- d[i][o] = (rand() % 25)+65;
- printf("%s ", d[i]);
- }
- printf("\n");
- // Budujemy kopiec
- for(i = 2; i <= N; i++)
- {
- j = i; k = j / 2;
- strcpy(x, d[i]);
- while((k > 0) && (strcmp(d[k],x) < 0))
- {
- strcpy(d[j], d[k]);
- j = k; k = j / 2;
- }
- strcpy(d[j], x);
- }
- // Rozbieramy kopiec
- for(i = N; i > 1; i--)
- {
- strcpy(tmp, d[1]);
- strcpy(d[1], d[i]);
- strcpy(d[i], tmp);
- j = 1; k = 2;
- while(k < i)
- {
- if((k + 1 < i) && (strcmp(d[k+1],d[k]) > 0))
- m = k + 1;
- else
- m = k;
- if((strcmp(d[m],d[j]) <= 0))
- break;
- strcpy(tmp, d[j]);
- strcpy(d[j], d[m]);
- strcpy(d[m], tmp);
- j = m; k = j + j;
- }
- }
- printf("\n---Po---\n");
- for(i = 1; i <= N; i++)
- printf("%s ", d[i]);
- printf("\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement