You are on page 1of 2

Elektrotehnički fakultet

Banja Luka
Katedra za računarsku tehniku

STRUKTURE PODATAKA I ALGORITMI

Laboratorijska vježba 4
Priprema
1. Ponoviti algoritme sortiranja
2. Analizirati sljedeći C++ kod:
inline void swap(int& a, int& b)
{
int tmp = a;
a = b;
b = tmp;
}

void percolate_down(int x[], int i, int n)


{
while (i < n/2)
{
int child = 2*i+1;
if (child+1 < n && x[child+1] > x[child]) child++;
if (x[i] > x[child]) return;
else
{
swap(x[i], x[child]);
i = child;
}
}
}

void build_heap(int x[], int n)


{
for (int i = n/2-1; i >= 0; i--)
percolate_down(x, i, n);
}

void heap_sort(int x[], int n)


{
build_heap(x, n);

for (int i = n-1; i>0; i--)


{
swap(x[i], x[0]);
percolate_down(x,0,i);
}
}

3. Analizirati sljedeći C++ kod


inline void swap(int& a, int& b)
{
int tmp = a;
a = b;
b = tmp;
}

int partition(int x[],int down, int up)


{
int i = down;
int j = up;
int pivot = x[down];
do {
while (i <= j && x[i] <= pivot) i++;
while (i <= j && x[j] > pivot) j--;
if (i < j) swap(x[i], x[j]);
} while (i<j);

x[down] = x[i-1];
x[i-1] = pivot;
return i-1;
}

void quick_sort(int x[], int down, int up)


{
if (down >= up) return;
int p = partition(x,down, up);
quick_sort(x,down,p-1);
quick_sort(x,p+1,up);
}

void quick_sort(int x[], int n)


{
quick_sort(x, 0, n-1);
}

4. Analizirati sljedeći C++ kod:


void bubble_sort(int x[], int n)
{
int pos = n-1;
do
{
int bound = pos
pos = -1;
for (int i = 0; i < bound; i++)
if (x[i] > x[i+1])
{
int tmp = x[i];
x[i] = x[i+1];
x[i+1] = tmp;
pos = i;
}
} while (pos != -1);
}

5. Analizirati sljedeći C++ kod:


void insertion_sort(int x[], int n)
{
for (int i = 1; i < n; i ++)
{
int y = x[i];
int j = i-1;

while (j >= 0 && x[j] > y)


{
x[j+1] = x[j];
j--;
}
x[j+1] = y;
}
}

You might also like