Skip to content
Snippets Groups Projects
Verified Commit 5960f784 authored by orestis.malaspin's avatar orestis.malaspin
Browse files

rolling

parents
No related branches found
No related tags found
No related merge requests found
complexite.html
complexite.pdf
.vscode
[submodule "css"]
path = css
url = https://github.com/edwardtufte/tufte-css.git
Makefile 0 → 100644
OPTIONS = --filter=pandoc-crossref
PDFOPTIONS = --highlight-style kate
PDFOPTIONS += --pdf-engine xelatex
PDFOPTIONS += --number-sections
PDFOPTIONS += -V "monofont:DejaVu Sans Mono"
HTMLOPTIONS += -t html5
HTMLOPTIONS += -c css/tufte.css
HTMLOPTIONS += --self-contained
MD=$(wildcard *.md)
HTML=$(MD:%.md=%.html)
PDF=$(MD:%.md=%.pdf)
all: $(HTML) $(PDF)
%.pdf: %.md Makefile
pandoc -s $(OPTIONS) $(PDFOPTIONS) -o $@ $<
%.html: %.md Makefile
pandoc -s $(OPTIONS) $(HTMLOPTIONS) -o $@ $<
deploy: all
mkdir -p prog_seq_c_tp/tris_multiples
cp tris_multiples.html prog_seq_c_tp/tris_multiples/index.html
cp tris_multiples.pdf prog_seq_c_tp/tris_multiples/tris_multiples.pdf
cp -r skeleton prog_seq_c_tp/tris_multiples/
clean:
rm -rf *.html *.pdf prog_seq_c_tp
---
author:
- Mesure de complexité
title: Cours de programmation séquentielle
autoSectionLabels: false
autoEqnLabels: true
eqnPrefix:
- "éq."
- "éqs."
chapters: true
numberSections: false
chaptersDepth: 1
sectionsDepth: 3
lang: fr
documentclass: article
papersize: A4
cref: false
urlcolor: blue
toc: false
---
# Buts
- Implémentations d'algorithmes de tris.
- Mesure de complexité et de performances.
- Utilisation de `make`.
# Énoncé
L'objectif de ce travail pratique est d'implémenter les tris vus en cours et de mesurer leurs performances respectives. En particulier, vous
devez écrire les codes en C:
- du tri par base,
- du tri par fusion,
- du tri par sélection,
- du tri rapide,
- du tri à bulles,
- du tri par insertion,
- du tri cocktail.
A l'exception du tri cocktail, les (pseudo-)codes de ces tris se trouve dans les slides du [cours 7](https://malaspinas.academy/algo_cours/cours_7.pdf) et du [cours 8](https://malaspinas.academy/algo_cours/cours_8.pdf). Pour le tri cocktail, une bonne description se trouve sur [Wikipedia](https://fr.wikipedia.org/wiki/Tri_cocktail).
La structure de votre code devrait être la suivante:
```console
.
├── cocktail_sort.h
├── cocktail_sort.c
├── merge_sort.h
├── merge_sort.c
├── quick_sort.h
├── quick_sort.c
├── bubble_sort.h
├── bubble_sort.c
├── radix_sort.h
├── radix_sort.c
├── insertion_sort.h
├── insertion_sort.c
├── selection_sort.h
├── selection_sort.c
├── sort.c
└── Makefile
```
Le point d'entrée de votre programme doit être contenu dans le fichier `sort.c`.
Il doit générer un tableau de taille `N` rempli de valeurs aléatoires et les trier à l'aide d'un des tris ci-dessus.
Finalement, il doit vérifier que le tableau est correctement trié.
L'utilisation de votre programme
devrait être de la forme
```console
./sort <num> <N>
```
`num` est le numéro correspondant au tri, et `N` est la taille du tableau à trier.
En sortie, votre programme doit afficher le temps qu'il a fallu pour effectuer le **tri** du tableau (on exclut l'allocation et initialisation
du tableau). Pour mesurer le temps d'exécution vous pouvez vous inspirer du [cours 7](https://malaspinas.academy/algo_cours/cours_7.pdf).
Une fois que vous avez implémenté ces fonctionnalités et les tris, vous devrez faire des graphes de performances (le temps d'exécution) de chaque tri
en fonction de la taille des tableaux à trier (la taille du tableau sur l'axe horizontal, et le temps d'exécution sur l'axe vertical).
Vérifiez que la complexité algorithmique est bien celle prédite dans le cours (en gros soit ça sera $N^2$ soit $N\cdot \log_2(N)$).
## Remarques
### Options de compilation
Afin de mesurer les performances, utilisez l'option `-O3` de `gcc` ou `clang` pour que le compilateur optimise votre code au maximum.
### Mesures de performances
Afin de mesurer les performances de façon aussi précise que possible il est recommandé de faire deux choses importantes:
1. Faire un *tour de chauffe* de votre algorithme de tri. Avant de faire la mesure, triez plusieurs fois de suite le tableau sans mesurer le temps.
2. Une fois le tour de chauffe terminé triez plusieurs fois le tableau en mesurant le temps d'exécution et moyennez le temps pris par le tri.
\ No newline at end of file
Subproject commit 957e9c6dc3646ab1847ebe41fdb853e59ecf8579
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment