From 87cd14ad985e499207ada5a332b0aeb31f5475e8 Mon Sep 17 00:00:00 2001
From: Ukhanov Ilya <ukhanov@unistra.fr>
Date: Fri, 14 Feb 2020 14:38:52 +0100
Subject: [PATCH] Transformed main

---
 TP2/Makefile |  12 ++++++
 TP2/main     | Bin 0 -> 24936 bytes
 TP2/main.c   |  47 +++++++++++++++++++++++
 TP2/test.sh  |  10 +++++
 TP2/tris.c   | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++
 TP2/tris.h   |  17 +++++++++
 TP2/tris.o   | Bin 0 -> 11280 bytes
 TP2/utils.c  |  18 +++++++++
 TP2/utils.h  |   5 +++
 TP2/utils.o  | Bin 0 -> 6824 bytes
 10 files changed, 214 insertions(+)
 create mode 100644 TP2/Makefile
 create mode 100755 TP2/main
 create mode 100644 TP2/main.c
 create mode 100644 TP2/test.sh
 create mode 100644 TP2/tris.c
 create mode 100644 TP2/tris.h
 create mode 100644 TP2/tris.o
 create mode 100644 TP2/utils.c
 create mode 100644 TP2/utils.h
 create mode 100644 TP2/utils.o

diff --git a/TP2/Makefile b/TP2/Makefile
new file mode 100644
index 0000000..4ef68c0
--- /dev/null
+++ b/TP2/Makefile
@@ -0,0 +1,12 @@
+all: main
+	
+main : tris.o utils.o main.c
+	gcc -o main -Wall utils.o tris.o -g main.c
+
+tris.o : tris.c tris.h
+	gcc -c -Wall -g tris.c
+
+utils.o : utils.c utils.h
+	gcc -o utils.o -c -g utils.c
+clean :
+	rm *.o
diff --git a/TP2/main b/TP2/main
new file mode 100755
index 0000000000000000000000000000000000000000..4bcea08537181edf148e3c95d4cc01c68c08e7ef
GIT binary patch
literal 24936
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

literal 0
HcmV?d00001

diff --git a/TP2/main.c b/TP2/main.c
new file mode 100644
index 0000000..c9c57bb
--- /dev/null
+++ b/TP2/main.c
@@ -0,0 +1,47 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "tris.h"
+#include "utils.h"
+
+int main(int argc, char *argv[]) {
+  if(argc != 4) {
+    printf("Usage: %s [typeAlgo] [taille] [isAfficher]\n", argv[0]);
+    exit(1);
+  }
+
+  char typeAlgo = argv[1][0];
+  long taille = (long) atoi(argv[2]);
+  long MAX = 50;
+  long tab[taille];
+  size_t afficher = (size_t) atoi(argv[3]);
+
+  genTab(tab, taille, MAX);
+
+  switch(typeAlgo) {
+    case 'i':
+      printf("Tri Insertion: \n");
+      triInsertion(tab,taille);
+
+      if(afficher)
+        affichertab(tab,taille);
+      break;
+
+    case 'r':
+      printf("Tri Rapide: \n");
+      triRapide(tab, taille);
+
+      if(afficher)
+        affichertab(tab,taille);
+      break;
+
+    case 'f':
+      printf("Tri Fusion: \n");
+      triFusion(tab, taille);
+
+      if(afficher)
+        affichertab(tab,taille);
+      break;
+  }
+
+  return 0;
+}
diff --git a/TP2/test.sh b/TP2/test.sh
new file mode 100644
index 0000000..6fbf719
--- /dev/null
+++ b/TP2/test.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+algo = "insertion"
+taille = 10000
+
+for iTest in 'seq 1 100'
+do
+    res = (/usr/bin/time -f "%U\t%M" ./main $algo $taille)
+    echo -e "$iTest\t$taille\t$res"
+done
diff --git a/TP2/tris.c b/TP2/tris.c
new file mode 100644
index 0000000..d3df80c
--- /dev/null
+++ b/TP2/tris.c
@@ -0,0 +1,105 @@
+#include <math.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "tris.h"
+
+void triInsertion(long* A, size_t n) {
+    for(size_t i = 1; i <= n-1; i++){
+        long cle = A[i];
+        size_t j = i - 1;
+        while(j+1 >= j && A[j] > cle){
+            A[j+1] = A[j];
+            j = j-1;
+        }
+        A[j+1] = cle;
+    }
+}
+
+void triFusion(long* A, size_t size) {
+  sousTriFusion(A, 0, size);
+}
+
+void sousTriFusion(long* A, size_t first, size_t size) {
+    if(first+1 <size){ // p < r - 1
+        size_t middle = floor((first+size)/2);
+        sousTriFusion(A, first, middle);
+        sousTriFusion(A, middle, size);
+        fusion(A, first, middle, size);
+    }
+}
+
+void copySousTable(long* mainT, long* underT, size_t id, size_t size) {
+  for(size_t i = id; i < id+size; ++i) {
+    underT[i-id] = mainT[i];
+  }
+}
+
+void fusion(long* A, size_t first, size_t middle, size_t size) {
+    size_t n1 = middle - first; // Nb elem dans A[p , q]  q exclu
+    size_t n2 = size - middle;  // Nb elem dans A[q , r]  r exclu
+
+    size_t indg = 0;
+    size_t indd = 0;
+
+    long* ag = malloc(sizeof(long) * n1);
+    long* ad = malloc(sizeof(long) * n2);
+
+    copySousTable(A, ag, first, n1);
+    copySousTable(A, ad, middle, n2);
+
+    int i = first;
+
+    while(i < size) {
+      if(indg == n1) {
+        A[i] = ad[indd];
+        indd++;
+      }
+      else if(indd == n2) {
+        A[i] = ag[indg];
+        indg++;
+      }
+      else if(ag[indg] < ad[indd]) {
+        A[i] = ag[indg];
+        indg++;
+      }
+      else {
+        A[i] = ad[indd];
+        indd++;
+      }
+      ++i;
+    }
+
+    free(ag);
+    free(ad);
+}
+
+void triRapide(long* A, size_t n) {
+    sousTriRapide(A,0,n);
+}
+
+void sousTriRapide(long* A, size_t first, size_t size){
+    if(first+1 < size){
+        size_t middle = partition(A,first,size);
+        sousTriRapide(A,first,middle);
+        sousTriRapide(A,middle+1,size);
+    }
+}
+
+size_t partition(long* A, size_t first, size_t size) {
+    long pivot = A[size-1];
+    size_t i = first;
+    for(int j = first; j+2 <= size; j++){
+        if(A[j] <= pivot){
+            permuter(A,i,j);
+            i++;
+        }
+    }
+    permuter(A,i,size-1);
+    return i;
+}
+
+void permuter(long* A,size_t i,size_t j) {
+    long inter = A[i];
+    A[i] = A[j];
+    A[j] = inter;
+}
diff --git a/TP2/tris.h b/TP2/tris.h
new file mode 100644
index 0000000..9841ffb
--- /dev/null
+++ b/TP2/tris.h
@@ -0,0 +1,17 @@
+#ifndef TRIS_H
+#define TRIS_H
+#include <stdint.h>
+#include <stdlib.h>
+
+void triInsertion(long* A, size_t n);
+
+void triFusion(long* A, size_t size);
+void sousTriFusion(long* A, size_t first, size_t size);
+void fusion(long* A, size_t first, size_t middle, size_t size);
+
+void triRapide(long* A, size_t n);
+void sousTriRapide(long* A, size_t first, size_t size);
+size_t partition(long* A, size_t first, size_t size);
+void permuter(long* A,size_t i,size_t j);
+
+#endif //TRIS_H
diff --git a/TP2/tris.o b/TP2/tris.o
new file mode 100644
index 0000000000000000000000000000000000000000..feb455293f158d5d0ad902bbc1189c5183749779
GIT binary patch
literal 11280
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

literal 0
HcmV?d00001

diff --git a/TP2/utils.c b/TP2/utils.c
new file mode 100644
index 0000000..bd523d7
--- /dev/null
+++ b/TP2/utils.c
@@ -0,0 +1,18 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "utils.h"
+
+void affichertab(long* T, int s){
+    printf("[ ");
+    for(int i = 0; i < s-1; i++){
+        printf("%d , ",T[i]);
+    }
+    printf("%d ]\n",T[s-1]);
+}
+
+void genTab(long* T, long taille, long MAX) {
+  // Generer le tableau
+  for(long i = 0; i < taille; ++i) {
+    T[i] = rand() % MAX;
+  }
+}
diff --git a/TP2/utils.h b/TP2/utils.h
new file mode 100644
index 0000000..0c016ab
--- /dev/null
+++ b/TP2/utils.h
@@ -0,0 +1,5 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+void affichertab(long* T, int s);
+void genTab(long* T, long taille, long MAX);
diff --git a/TP2/utils.o b/TP2/utils.o
new file mode 100644
index 0000000000000000000000000000000000000000..2408e3a0b5ba8709487bf1b2022345b78b83b3d0
GIT binary patch
literal 6824
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

literal 0
HcmV?d00001

-- 
GitLab