Skip to content
Snippets Groups Projects
Commit e686a541 authored by Ukhanov Ilya's avatar Ukhanov Ilya
Browse files

Tri Merge

parent 8db26d5e
Branches
No related merge requests found
main: main.o tris.o
gcc -o main main.o tris.o
main.o : main.c
gcc -o main.o -c main.c
all: main
main : tris.o main.c
gcc -o main -Wall tris.o -g main.c
tris.o : tris.c tris.h
gcc -o tris.o -c tris.c
gcc -c -Wall -g tris.c
clean :
rm *.o
No preview for this file type
#include <stdio.h>
#include "tris.h"
int main() {
long A[5] = {3, 4, 1, 6, -1};
triFusion(A, 5);
for(int i = 0; i < 5; ++i) {
printf("%i\n", A[i]);
}
return 0;
}
File deleted
triInsertion(A,n){
for(int i = 1; i <= n-1; i++){
clé = A[i];
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include "tris.h"
/*triInsertion(A,n){
for(size_t i = 1; i <= n-1; i++){
clef = A[i];
j = i - 1;
while(j >= 0 && A[j] > clé){
A[j+1] = A[j];
j --;
j--;
}
A[j+1] = clé;
A[j+1] = clef;
}
}*/
void triFusion(long* A, size_t size) {
sousTriFusion(A, 0, size);
printf("Tri fusion\n");
}
#include <math.h>
void sousTriFusion(long* A, size_t first, size_t size) {
if(first<size-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];
}
}
sousTriFusion(A,p,r){
if(p<r-1){
q = floor((p+r)/2);
sousTriFusion(A,p,q);
sousTriFusion(A,p)
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);
printf("Malloc\n");
copySousTable(A, ag, first, n1);
copySousTable(A, ad, middle, n2);
printf("CopySousTable\n");
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] = ag[indg];
indd++;
}
++i;
}
}
\ No newline at end of file
free(ag);
free(ad);
}
#ifndef TRIS_H
#define TRIS_H
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);
#endif //TRIS_H
No preview for this file type
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