diff --git a/readme.md b/readme.md index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..66e9ed7471f39b16ca03d8e7e4b75c065f34c278 100644 --- a/readme.md +++ b/readme.md @@ -0,0 +1,139 @@ +# Projet_Pne + +# METHODE DE QUICKSORT + + + +# FONCTION PARTITION + +static void partition(list_t * L, elmlist_t * pivot, list_t * val_inf, list_t * val_sup, int (*cmpFct)(void*, void*)) { + for (elmlist_t * cur = L->head; cur != NULL; cur = cur->suc) { //on parcourt la liste de la tête jusqu'à 0 + if (cmpFct(get_data(cur), get_data(pivot)) < 0) //cmpfct va decider si le data est inferiur + queue(val_inf, get_data(cur)); + else + queue(val_sup, get_data(cur)); + } +} + + +# FONCTION QUICKSORT + +# Etape (1) +void quick_sort(list_t * L, int (*cmpFct)(void*, void*)) { + assert(L && cmpFct); //on verifier L et CmpFct + + if (L->numelm > 1) { + + elmlist_t * pivot = get_head(L); //la tete sera un pivot et on le retire de la liste + L->head = get_suc(pivot); + pivot->pred = NULL; + pivot->suc = NULL; + } + +# Etape (2) +//on créer deux nouveaux liste +list_t * val_inf_pivot = new_list(); +list_t * val_sup_pivot = new_list(); + + +# Etape (3) + +//on appelle le fonction partition +partition(L,pivot,val_inf_pivot,val_sup_pivot,cmpFct); + +# Etape (4) + + if (is_empty(val_inf_pivot)) { //le liste sera le pivot s'il n'y en a pas + L->head = pivot; + L->tail = pivot; + L->numelm = 1; + } else { + quick_sort(val_inf_pivot, cmpFct); + L->head = val_inf_pivot->head; + L->tail = val_inf_pivot->tail; + L->numelm = val_inf_pivot->numelm; + pivot->pred = L->tail; + L->tail->suc = pivot; + L->tail = pivot; + L->numelm += 1; + } + + + if (!is_empty(val_sup_pivot)) { + quick_sort(val_sup_pivot, cmpFct); + val_sup_pivot->head->pred = pivot; + pivot->suc = val_sup_pivot->head; + L->tail = val_sup_pivot->tail; + L->numelm += val_sup_pivot->numelm; + } + +# Etape (5) +//on liberé leur pointeur respectif + free(val_inf_pivot); + free(val_sup_pivot); + } +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#outils +git remote add origin https://gitlab.univ-lorraine.fr/e87374u/projet_pne.git +git branch -M main +git push -uf origin main + +