Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<time.h>
- #include<sys/time.h>
- #include<pthread.h>
- typedef struct tab {
- int * t;
- int taille;
- } tab;
- typedef struct quickarg {
- tab * tab;
- int premier;
- int dernier;
- } quickarg;
- void afficher_tab (tab * tab);
- int quicksort_partitionner (tab * tab, int premier, int dernier, int pivot);
- void echanger(tab * tab, int i, int j);
- void quicksort (quickarg qa);
- int main () {
- tab * tab;
- tab = malloc (sizeof(tab));
- tab->taille = 6;
- tab->t = malloc(tab->taille * sizeof(int));
- for (int i = 0; i < tab->taille; i++){
- tab->t[i] = rand() % 100;
- }
- quickarg qa;
- qa.tab = tab;
- qa.premier = 0;
- qa.dernier = tab->taille - 1;
- afficher_tab(tab);
- quicksort(qa);
- afficher_tab(tab);
- return EXIT_SUCCESS;
- }
- void quicksort (quickarg qa) {
- printf("allo quoi\n");
- pthread_t thread1, thread2;
- int pivot = qa.premier;
- int dernier = qa.dernier;
- if (qa.premier < qa.dernier) {
- pivot = quicksort_partitionner(qa.tab, qa.premier, qa.dernier, pivot);
- qa.dernier = pivot - 1;
- pthread_create (&thread1, NULL, (void *) &quicksort, (void *) &qa);
- qa.premier = pivot + 1;
- qa.dernier = dernier;
- pthread_create (&thread2, NULL, (void *) &quicksort, (void *) &qa);
- pthread_join(thread1, NULL);
- pthread_join(thread2, NULL);
- }
- }
- int quicksort_partitionner (tab * tab, int premier, int dernier, int pivot) {
- int j = premier;
- echanger(tab, pivot, dernier);
- for (int i = premier; i < dernier; i++){
- if (tab->t[i] < tab->t[dernier]) {
- echanger(tab, i, j);
- j++;
- }
- }
- echanger(tab, dernier, j);
- afficher_tab(tab);
- return j;
- }
- void afficher_tab (tab * tab) {
- for (int i = 0; i < tab->taille; i++){
- printf("%d ", tab->t[i]);
- }
- printf("\n");
- }
- void echanger(tab * tab, int i, int j) {
- int k = tab->t[i];
- tab->t[i] = tab->t[j];
- tab->t[j] = k;
- }
Add Comment
Please, Sign In to add comment