Skip to content
Snippets Groups Projects
Commit 00403122 authored by Michael Leppert's avatar Michael Leppert
Browse files

dossier renomme

parent d76d7ae8
1 merge request!1makefile et autres
This commit is part of merge request !1. Comments created here will be created in the context of that merge request.
#include "function.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void afficheTab(long tabAAffiche[], size_t tabTaille){
printf("[ ");
for(size_t i=0; i<tabTaille; i++){
if(i==tabTaille-1){
printf("%ld", tabAAffiche[i]);
}
else{
printf("%ld, ", tabAAffiche[i]);
}
}
printf(" ]\n");
}
void genTabAlea(long tabARemplir[], size_t tailleTab) {
int rand_is_seeded = 0;
if(!rand_is_seeded)
{
srand(time(NULL));
rand_is_seeded = 1;
}
for(size_t i=0; i<tailleTab; i++){
tabARemplir[i]=rand()%(10);
}
}
#define _function_h
#include <stdio.h>
//Procédure d'affichage d'un tableau passé en paramètre
void afficheTab(long tabAAffiche[], size_t tabTaille);
//Remplis le tableau passé en paramètre de valeurs aléatoires
void genTabAlea(long tabARemplir[], size_t tailleTab);
#include "tri_fusion.h"
#include "tri_rapide.h"
#include "tri_insertion.h"
#include "function.h"
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[]) {
long tableauBis[20];
memset(tableauBis, 0, 20*sizeof(long));
printf("--- Tableau initial insertion ---\n");
genTabAlea(tableauBis,20);
afficheTab(tableauBis,20);
tri_insertion(tableauBis,20);
afficheTab(tableauBis,20);
printf("\n\n");
/*printf("--- Tableau initial fusion ---\n");
genTabAlea(tableauBis,20);
afficheTab(tableauBis,20);
triFusion(tableauBis,20);
afficheTab(tableauBis,20);*/
printf("\n\n");
/*printf("--- Tableau initial rapide ---\n");
genTabAlea(tableauBis,20);
afficheTab(tableauBis,20);
triRapide(tableauBis,20);
afficheTab(tableauBis,20);*/
return 0;
}
all: main
main: main.c tri_fusion.o tri_rapide.o tri_insertion.o function.o
gcc -Wall -o main tri_fusion.o tri_rapide.o tri_insertion.o function.o main.c
tri_fusion.o: tri_fusion.h tri_fusion.c
gcc -Wall -c tri_fusion.c
tri_rapide.o: tri_rapide.h tri_rapide.c
gcc -Wall -c tri_rapide.c
tri_insertion.o: tri_insertion.h tri_insertion.c
gcc -c tri_insertion.c -Wall
function.o: function.h function.c
gcc -c function.c -Wall
clean:
rm *.o main
#include "tri_fusion.h"
#include "function.h"
void sousTriFusion(long tab[], size_t p, size_t r){
if(p < r - 1){
size_t q = (p + r)/2;
sousTriFusion(tab, p, q);
sousTriFusion(tab, q, r);
fusion(tab, p, q, r);
}
}
void fusion(long tab[], size_t p, size_t q, size_t r){
size_t n1 = q - p;
size_t n2 = r - q;
long tabG[n1];
long tabD[n2];
memset(tabD, 0, n1*sizeof(long));
memset(tabG, 0, n2*sizeof(long));
size_t j = 0;
for(size_t i = p; i < q; i++) {
tabG[j] = tab[i];
j++;
}
j = 0;
for(size_t i = q; i < r; i++){
tabD[j] = tab[i];
j++;
}
size_t indG = 0;
size_t indD = 0;
size_t i = p;
while(i < r){
if(indG == n1){
tab[i] = tabD[indD];
indD++;
}
else if(indD == n2){
tab[i] = tabG[indG];
indG++;
}
else if(tabG[indG] < tabD[indD]){
tab[i] = tabG[indG];
indG++;
}
else{
tab[i] = tabD[indD];
indD++;
}
i++;
}
}
void triFusion(long tab[], size_t taille){
printf("--- Lancement d'un tri fusion ! ---\n");
sousTriFusion(tab, 0, taille);
}
#include <stdint.h>
#include <inttypes.h>
#include <stdio.h>
#include <string.h>
void sousTriFusion(long tab[], size_t p, size_t r);
void fusion(long tab[], size_t p, size_t q, size_t r);
void triFusion(long tab[], size_t taille);
#include "tri_insertion.h"
#include "function.h"
void tri_insertion(long tabInit[], size_t tailleTab) {
printf("--- Lancement d'un tri insertion ! ---\n");
for(size_t i=1; i<tailleTab; i++) {
long clef = tabInit[i];
int j=i-1;
while(j >= 0 && tabInit[j]>clef) {
tabInit[j+1]=tabInit[j];
j=j-1;
}
tabInit[j+1]=clef;
}
}
#define _tri_insertion_h
#include <stdio.h>
void tri_insertion(long tabInit[], size_t tailleTab);
#include "tri_rapide.h"
#include "function.h"
void sousTriRapide(long tab[], size_t p, size_t r){
size_t max = 0; max--;
if(r-1 != max){
if(p < r-1 ){
size_t q = partition(tab, p, r);
sousTriRapide(tab, p, q);
sousTriRapide(tab, q+1, r);
}
}
}
int partition(long tab[], size_t p, size_t r){
long pivot = tab[r - 1];
size_t i = p;
for(size_t j = p; j <= (r - 2); j++ ){
if(tab[j] <= pivot){
long temp = tab[j];
tab[j] = tab[i];
tab[i] = temp;
i++;
}
}
long temp = tab[i];
tab[i] = tab[r-1];
tab[r-1] = temp;
return i;
}
void triRapide(long tab[], size_t taille){
printf("--- Lancement d'un tri rapide ! ---\n");
sousTriRapide(tab, 0, taille);
}
#include <stdint.h>
#include <inttypes.h>
#include <stdio.h>
#include <string.h>
void sousTriRapide(long tab[], size_t p, size_t r);
int partition(long tab[], size_t p, size_t r);
void triRapide(long tab[], size_t taille);
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