File: Stare vježbe/vjezbe07/46__quick_sort.c

  1. /*
  2.   46__quick_sort.c
  3.   -----
  4.   Program generirani niz slucajnih brojeva sortira quick sort algoritmom
  5.   za sortiranje.
  6. */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <time.h>
  11.  
  12. #define MAX 100
  13. /* definicija macro naredbe za zamjenu vrijednosti dvaju int varijabli */
  14. #define SWAP(a, b) { int t; t=a; a=b; b=t; }
  15.  
  16. /* globalno polje koje ce sadrzavati niz slucajnih brojeva */
  17. int a[MAX];
  18.  
  19. void quick(int lijevi, int desni)
  20. {
  21. int j, k, x;
  22. if(lijevi < desni) {
  23. if(a[lijevi] > a[desni])
  24. SWAP(a[lijevi], a[desni]);
  25. j=lijevi;
  26. k=desni;
  27. do {
  28. do { j++; } while(a[j] < a[lijevi]);
  29. do { k--; } while(a[k] > a[lijevi]);
  30. if(j < k)
  31. SWAP(a[j], a[k]);
  32. } while(j <= k);
  33. SWAP(a[lijevi], a[k]);
  34. quick(lijevi, k-1);
  35. quick(k+1, desni);
  36. }
  37. }
  38.  
  39. int main()
  40. {
  41. int n, k;
  42.  
  43. srand((unsigned)time(NULL));
  44.  
  45. printf("Unesite zeljenu velicinu niza brojeva: ");
  46. scanf("%d", &n);
  47. printf("Niz slucajnih brojeva [1-100]:\n");
  48. for (k = 0; k < n; k++) {
  49. a[k] = rand() % 100 + 1;
  50. printf("%d ", a[k]);
  51. }
  52. printf("\n");
  53.  
  54. quick(0, n-1);
  55.  
  56. printf("\nNiz brojeva nakon provodjenja quick sort algoritma:\n");
  57. for(k = 0; k < n; k++)
  58. printf("%d ", a[k]);
  59. printf("\n");
  60.  
  61. return 0;
  62. }
  63.  
  64.