Advertisement
aisp

IZLAZNI KOLOKVIJ - 26.01.2018. (B)

Jun 12th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.02 KB | None | 0 0
  1. // 1. zadatak
  2. void BinarnoPretrazivanje(int *polje, int velicinaPolja, int trazeniBroj) {
  3.     int dg, gg, sredina, flag;
  4.     dg = 0;
  5.     gg = velicinaPolja - 1;
  6.     sredina = (dg + gg) / 2;
  7.     flag = 0;
  8.     while (dg <= gg) {
  9.         if (polje[sredina] == trazeniBroj) {
  10.             cout << "Broj pronadjen" << endl;
  11.             flag = 1;
  12.             break;
  13.         }
  14.         else if (polje[sredina] < trazeniBroj) {
  15.             dg = sredina + 1;
  16.         }
  17.         else if (polje[sredina] > trazeniBroj) {
  18.             gg = sredina - 1;
  19.         }
  20.         sredina = (dg + gg) / 2;
  21.     }
  22.     if (flag == 0) {
  23.         cout << "Broj nije pronadjen" << endl;
  24.     }
  25. }
  26.  
  27. // 2. zadatak
  28. struct Node
  29. {
  30.     int data;
  31.     struct Node* next;
  32. };
  33.  
  34. bool find(struct Node* head, int n) {
  35.     struct Node* p = head;
  36.     int len = 0;
  37.  
  38.     // Pretrazivanje O(n)
  39.     while (p != NULL) {
  40.         if (p->data == n) {
  41.             return true;;
  42.         }
  43.         len++;
  44.         p = p->next;
  45.     }
  46.  
  47.     // Na početak O(1)
  48.     struct Node* front;
  49.     front->data = n;
  50.     front->next = head;
  51.     head = front;
  52.  
  53.     // U sredinu O(n/2)
  54.     p = head;
  55.     int count = ((len % 2) == 0) ? (len / 2) : (len + 1) / 2;
  56.     while (count-- > 1) {
  57.         p = p->next;
  58.     }
  59.     struct Node* mid;
  60.     mid->data = n;
  61.     mid->next = p->next;
  62.     p->next = mid;
  63.  
  64.     // Na kraj O(n)
  65.     p = head;
  66.     while (p->next != NULL) {
  67.         p = p->next;
  68.     }
  69.     struct Node* end;
  70.     end->data = n;
  71.     p->next = end;
  72.     end->next = NULL;
  73.  
  74.     return false;
  75. }
  76.  
  77. // 3. zadatak
  78. int Fibonacci(int n) {
  79.     if (n == 0) {
  80.         return 1;
  81.     }
  82.     if (n == 1) {
  83.         return 1;
  84.     }
  85.  
  86.     return Fibonacci(n - 1) + Fibonacci(n - 2);
  87. }
  88.  
  89. // 4. zadatak
  90. struct cvor {
  91.     int x;
  92.     struct cvor *left, *right;
  93. };
  94.  
  95. void ubaci(struct cvor *r, struct cvor *p) {
  96.     if ((r->right == NULL) && (p->x > r->x)) {
  97.         r->right = p;
  98.     }
  99.     else if ((r->right != NULL) && (p->x > r->x)) {
  100.         ubaci(r->right, p);
  101.     }
  102.     if ((r->left == NULL) && (p->x < r->x)) {
  103.         r->left = p;
  104.     }
  105.     else if ((r->left != NULL) && (p->x < r->x)) {
  106.         ubaci(r->left, p);
  107.     }
  108. }
  109.  
  110. void preOrder(struct cvor* root) {
  111.     if (root == NULL){
  112.         return;
  113.     }
  114.     else{
  115.         printf("%d", root->x);
  116.         preOrder(root->left);
  117.         preOrder(root->right);
  118.     }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement