Skip to content
Snippets Groups Projects
Commit 19a74250 authored by malric litiere's avatar malric litiere
Browse files

pour pull

parents 69bfe69c f61484c6
Branches
No related merge requests found
......@@ -5,16 +5,23 @@
int main() {
long T1[5] ={3,2,5,1,4} ;
printf("Tri Insertion: \n");
long triIns[8] ={3,2,8,4,1,6,7,5};
affichertab(triIns,8);
triInsertion(triIns,8);
affichertab(triIns,8);
long T2[8] ={3,2,8,4,1,6,7,5} ;
printf("Tri Rapide: \n");
long triRap[8] ={3,2,8,4,1,6,7,5};
affichertab(triRap,8);
triRapide(triRap, 8);
affichertab(triRap,8);
affichertab(T1,5);
printf("\n");
triInsertion(T1,5);
affichertab(T1,5);
printf("Tri Fusion: \n");
long triFus[8] ={3,2,8,4,1,6,7,5};
affichertab(triFus,8);
triFusion(triFus, 8);
affichertab(triFus,8);
return 0;
}
......@@ -17,23 +17,20 @@ void triInsertion(long* A, size_t n) {
void triFusion(long* A, size_t size) {
sousTriFusion(A, 0, size);
printf("Tri fusion\n");
}
void sousTriFusion(long* A, size_t first, size_t size) {
if(first<size-1){
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);
}
printf("Sous Tri fusion\n");
}
void copySousTable(long* mainT, long* underT, size_t id, size_t size) {
size_t i = 0;
for(; id < size; ++id) {
mainT[id] = underT[i];
for(size_t i = id; i < id+size; ++i) {
underT[i-id] = mainT[i];
}
}
......@@ -46,11 +43,9 @@ void fusion(long* A, size_t first, size_t middle, size_t size) {
long* ag = malloc(sizeof(long) * n1);
long* ad = malloc(sizeof(long) * n2);
printf("Malloc\n");
copySousTable(A, ag, first, n1);
copySousTable(A, ad, middle, n2);
printf("CopySousTable\n");
int i = first;
......@@ -68,7 +63,7 @@ void fusion(long* A, size_t first, size_t middle, size_t size) {
indg++;
}
else {
A[i] = ag[indg];
A[i] = ad[indd];
indd++;
}
++i;
......@@ -78,6 +73,7 @@ void fusion(long* A, size_t first, size_t middle, size_t size) {
free(ad);
}
<<<<<<< HEAD
void triRapide(long* A, size_t n){
soustriRapide(A,0,n-1);
}
......@@ -111,4 +107,36 @@ void permuter(long* A,size_t i,size_t j){
// voila le début de tri rapide si j'ai pas le temp de le finir
// ni de le testé
\ No newline at end of file
=======
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;
}
>>>>>>> f61484c65f74d3b49ca5a7a457807526ac75448b
<<<<<<< HEAD
#ifndef TRIS_H
#define TRIS_H
#include <stdint.h>
......@@ -12,3 +13,22 @@ void fusion(long* A, size_t first, size_t middle, size_t size);
void soustriRapide( long* A, size_t p, size_t r);
#endif //TRIS_H
=======
#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
>>>>>>> f61484c65f74d3b49ca5a7a457807526ac75448b
#include <stdio.h>
#include <stdlib.h>
#include "utils.h"
#include "utils.h"
void affichertab(long* T, int s){
for(int i = 0; i < s; i++){
printf("%d \n",T[i]);
}
}
\ No newline at end of file
printf("[ ");
for(int i = 0; i < s-1; i++){
printf("%d , ",T[i]);
}
printf("%d ]\n",T[s-1]);
}
#include <stdio.h>
int main( int argc, const char* argv[] )
{
}
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