/*1.Napisati funkciju koja ispituje da li u datom nizu postoje dva elementa ciji je zbir jednak datom broju (uputstvo: prvo sortirati; korostiti quick sort ili neki drugi rekurzivan algoritam za sortiranje).*/ #include void swap(int a[], int i, int j) { int tmp = a[i]; a[i] = a[j]; a[j] = tmp; } /* Funkcija sortira deo niza brojeva a izmedju pozicija l i r*/ void quick_sort(int a[], int l, int r) { int i, pivot_position; /* Izlaz iz rekurzije -- prazan niz */ if (l >= r) return; /* Particionisanje niza. Svi elementi na pozicijama <= pivot_position (izuzev same pozicije l) su strogo manji od pivota. Kada se pronadje neki element manji od pivota, uvecava se pivot_position i na tu poziciju se premesta nadjeni element. Na kraju ce pivot_position zaista biti pozicija na koju treba smestiti pivot, jer ce svi elementi levo od te pozicije biti manji a desno biti veci ili jednaki od pivota. */ pivot_position = l; for (i = l + 1; i <= r; i++) if (a[i] < a[l]) swap(a, ++pivot_position, i); /* Postavljamo pivot na svoje mesto */ swap(a, l, pivot_position); /* Rekurzivno sortiramo elemente manje od pivota */ quick_sort(a, l, pivot_position - 1); /* Rekurzivno sortiramo elemente vece pivota */ quick_sort(a, pivot_position + 1, r); } int funk(int a[], int n, int x) { int i,j,s=0; for(i=0;i