Commit b5022a60 authored by Antoine Sauray's avatar Antoine Sauray
Browse files

use of lambda functions

parent 57f5321b
#ifndef SORT_H
#define SORT_H
void quicksort(int *tab, int debut, int fin, int order);
#include <stdbool.h>
#include <stdio.h>
void quicksort(int *tab, int debut, int fin, bool (*f1Ptr)(int, int), bool (*f2Ptr)(int, int));
#endif
\ No newline at end of file
......@@ -13,4 +13,10 @@ void init(int* array, int size);
bool isSorted(int* array, int size, int order);
bool more(int a,int b);
bool less(int a,int b);
bool descending(int a, int b);
bool pair(int a, int b);
bool impair(int a, int b);
#endif
\ No newline at end of file
......@@ -13,7 +13,14 @@ int main(){
printf("array is not sorted\n");
}
printArray(rands, SIZE);
quicksort(rands, 0, SIZE, DESCENDING);
bool (*morePtr)(int,int);
morePtr = &more;
bool (*lessPtr)(int,int);
lessPtr = &less;
quicksort(rands, 0, SIZE, lessPtr, morePtr);
printArray(rands, SIZE);
return 0;
}
......@@ -2,7 +2,7 @@
#include "../include/sort.h"
void quicksort(int *tab, int debut, int fin, int order){
void quicksort(int *tab, int debut, int fin, bool (*f1Ptr)(int, int), bool (*f2Ptr)(int, int)){
int temp;
int gauche = debut-1;
int droite = fin+1;
......@@ -14,15 +14,8 @@ void quicksort(int *tab, int debut, int fin, int order){
}
while(1){ //while true
if(order>0){
do droite--; while(tab[droite] > pivot); //parcourt du tableau de droite à gauche
do gauche++; while(tab[gauche] < pivot); //parcourt du tableau de gauche à droite
}
else if(order <0){
do droite--; while(tab[droite] < pivot); //parcourt du tableau de droite à gauche
do gauche++; while(tab[gauche] > pivot); //parcourt du tableau de gauche à droite
}
do droite--; while((*f1Ptr)(tab[droite], pivot)); //parcourt du tableau de droite à gauche
do gauche++; while((*f2Ptr)(tab[gauche], pivot)); //parcourt du tableau de gauche à droite
if(gauche < droite){ //si deux éléments sont mal placés, on les permutte
swap(int, tab[gauche], tab[droite]);
......@@ -33,7 +26,7 @@ void quicksort(int *tab, int debut, int fin, int order){
}
//récursion
quicksort(tab, debut, droite, order);
quicksort(tab, droite+1, fin, order);
quicksort(tab, debut, droite, f1Ptr, f2Ptr);
quicksort(tab, droite+1, fin, f1Ptr, f2Ptr);
}
\ No newline at end of file
......@@ -21,3 +21,17 @@ bool isSorted(int* array, int size, int order){
}
return true;
}
bool more(int a, int b){
//printf("%d < %d \n", a, b);
return a>b;
}
bool less(int a, int b){
return a<b;
}
bool pair(int a, int b){
return true;
}
bool impair(int a, int b){
return true;
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment