#include #include #include #include #include #define N 9 pthread_barrier_t barrier; //deklariraj prepreko int seznam[] = {1, 5, 2, 3, 7, 4, 9, 8, 0}; void compare_and_swap(int* a, int* b){ int temp; if (*b < *a) { temp = *a; *a = *b; *b = temp; } } void sodi_prehod(int seznam[]){ for (int i = 0; i < N-1; i=i+2) { compare_and_swap(&seznam[i], &seznam[i+1]); } } void lihi_prehod(int* seznam){ for (int i = 1; i < N-1; i=i+2) { compare_and_swap((seznam+i), (seznam+i+1)); } } void izpisi_seznam(int* seznam) { for (int i = 0; i < N; i++) { printf("%d ", *(seznam+i)); } } int main(){ pthread_barrier_init(&barrier, NULL, N/2); for (int i = 0; i < N; i++) { printf("%d ", seznam[i]); } printf("\n\n"); for (int i = 0; i <= N/2; i++) { sodi_prehod(seznam); printf("SODI: "); izpisi_seznam(seznam); printf("\n"); lihi_prehod(&seznam[0]); printf("LIHI: "); izpisi_seznam(seznam); printf("\n\n"); } pthread_barrier_destroy(&barrier); return 0; }