Ce cours couvre les informations essentielles que tout programmeur sérieux doit connaître sur les algorithmes et les structures des données, en mettant l'accent sur les applications et l'analyse scientifique des performances des implémentations Java. La première partie couvre les structures de données élémentaires, les algorithmes de tri et de recherche, et la deuxième partie se concentre sur les algorithmes de traitement des graphes et des chaînes de caractères. La deuxième partie se concentre sur les algorithmes de traitement des graphes et des chaînes de caractères. Toutes les fonctionnalités de ce cours sont disponibles gratuitement. Les personnes souhaitant approfondir le contenu peuvent se procurer le manuel Algorithms, Fourth Edition (sur lequel le cours est basé) ou visiter le site web algs4.cs.princeton.edu pour une mine de matériel supplémentaire. Ce cours n'offre pas de certificat à l'issue de la formation.
(11,562 avis)
Compétences que vous acquerrez
- Catégorie : Structure des données
- Catégorie : Algorithmes
- Catégorie : Programmation Java
Détails à connaître
10 devoirs
Découvrez comment les employés des entreprises prestigieuses maîtrisent des compétences recherchées
Il y a 13 modules dans ce cours
Bienvenue aux algorithmes, partie I.
Inclus
1 vidéo2 lectures1 devoir de programmation
Nous illustrons notre approche de base du développement et de l'analyse des algorithmes en examinant le problème de la connectivité dynamique. Nous présentons le type de données union-find et examinons plusieurs implémentations (recherche rapide, union rapide, union rapide pondérée et union rapide pondérée avec compression de chemin). Enfin, nous appliquons le type de données union-find au problème de percolation de la chimie physique.
Inclus
5 vidéos2 lectures1 devoir1 devoir de programmation
Notre approche de l'analyse des performances des algorithmes repose sur la méthode scientifique. Nous commençons par réaliser des expériences informatiques pour mesurer les temps d'exécution de nos programmes. Nous utilisons ces mesures pour élaborer des hypothèses sur les performances. Ensuite, nous créons des modèles mathématiques pour expliquer leur comportement. Enfin, nous envisageons d'analyser l'utilisation de la mémoire de nos programmes Java.
Inclus
6 vidéos1 lecture1 devoir
Nous considérons deux types de données fondamentaux pour le stockage de collections d'objets : la pile et la file d'attente. Nous mettons en œuvre chacun de ces types de données en utilisant soit une liste à lien unique, soit un tableau de redimensionnement. Nous introduisons deux fonctionnalités Java avancées - les génériques et les itérateurs - qui simplifient le code client. Enfin, nous examinons diverses applications des piles et des files d'attente, allant de l'analyse d'expressions arithmétiques à la simulation de systèmes de files d'attente.
Inclus
6 vidéos2 lectures1 devoir1 devoir de programmation
Nous présentons le problème du tri et l'interface Comparable de Java. Nous étudions deux méthodes de tri élémentaires (tri par sélection et tri par insertion) et une variante de l'une d'entre elles (shellsort). Nous considérons également deux algorithmes pour mélanger uniformément un tableau. Nous concluons par une application du tri au calcul de la coque convexe via l'algorithme de balayage de Graham.
Inclus
6 vidéos1 lecture1 devoir
Nous étudions l'algorithme mergesort et montrons qu'il garantit le tri de tout tableau de n éléments avec au plus n lg n comparaisons. Nous considérons également une version ascendante non récursive. Nous prouvons que tout algorithme de tri basé sur les comparaisons doit effectuer au moins n lg n comparaisons dans le pire des cas. Nous discutons de l'utilisation de différents ordonnancements pour les objets que nous trions et du concept connexe de stabilité.
Inclus
5 vidéos2 lectures1 devoir1 devoir de programmation
Nous introduisons et mettons en œuvre l'algorithme de tri aléatoire et analysons ses performances. Nous étudions également l'algorithme randomisé quickselect, une variante du tri sélectif qui permet de trouver le kème élément le plus petit en temps linéaire. Enfin, nous étudions le tri sélectif à trois voies, une variante du tri sélectif qui fonctionne particulièrement bien en présence de clés dupliquées.
Inclus
4 vidéos1 lecture1 devoir
Nous présentons le type de données de la file d'attente prioritaire et une implémentation efficace utilisant la structure de données du tas binaire. Cette implémentation conduit également à un algorithme de tri efficace connu sous le nom de heapsort. Nous concluons par une application des files d'attente prioritaires dans laquelle nous simulons le mouvement de n particules soumises aux lois de la collision élastique.
Inclus
4 vidéos2 lectures1 devoir1 devoir de programmation
Nous définissons une API pour les tables de symboles (également appelées tableaux associatifs, cartes ou dictionnaires) et décrivons deux implémentations élémentaires utilisant un tableau trié (recherche binaire) et une liste non ordonnée (recherche séquentielle). Lorsque les clés sont comparables, nous définissons une API étendue qui inclut les méthodes supplémentaires min, max floor, ceiling, rank et select. Pour développer une implémentation efficace de cette API, nous étudions la structure de données de l'arbre de recherche binaire et analysons ses performances.
Inclus
6 vidéos1 lecture1 devoir
Dans ce cours, notre objectif est de développer une table de symboles avec des performances logarithmiques garanties pour la recherche et l'insertion (et beaucoup d'autres opérations). Nous commençons par 2-3 arbres, qui sont faciles à analyser mais difficiles à implémenter. Ensuite, nous considérons les arbres de recherche binaires rouge-noir, que nous considérons comme une nouvelle façon d'implémenter les arbres 2-3 en tant qu'arbres de recherche binaires. Enfin, nous présentons les arbres B, une généralisation des arbres 2-3 qui sont largement utilisés pour mettre en œuvre les systèmes de fichiers.
Inclus
3 vidéos2 lectures1 devoir
Nous commençons par la recherche d'intervalles 1d et 2d, où le but est de trouver tous les points dans un intervalle 1d ou 2d donné. Pour ce faire, nous considérons les kd-arbres, une généralisation naturelle des BST lorsque les clés sont des points dans le plan (ou des dimensions supérieures). Nous considérons également les problèmes d'intersection, où le but est de trouver toutes les intersections parmi un ensemble de segments de lignes ou de rectangles.
Inclus
5 vidéos1 lecture1 devoir de programmation
Nous commençons par décrire les propriétés souhaitables des fonctions de hachage et la manière de les mettre en œuvre en Java, y compris un principe fondamental connu sous le nom d'hypothèse de hachage uniforme qui sous-tend le succès potentiel d'une application de hachage. Nous examinons ensuite deux stratégies de mise en œuvre des tables de hachage - le chaînage séparé et le sondage linéaire. Ces deux stratégies permettent d'obtenir des performances en temps constant pour la recherche et l'insertion dans le cadre de l'hypothèse de hachage uniforme.
Inclus
4 vidéos2 lectures1 devoir
Nous examinons diverses applications des tables de symboles, notamment les ensembles, les clients de dictionnaires, les clients d'indexation et les vecteurs épars.
Inclus
4 vidéos1 lecture
Instructeurs
Offert par
Recommandé si vous êtes intéressé(e) par Algorithmes
University of Colorado Boulder
University of Colorado Boulder
Birla Institute of Technology & Science, Pilani
Pour quelles raisons les étudiants sur Coursera nous choisissent-ils pour leur carrière ?
Avis des étudiants
11 562 avis
- 5 stars
89,27 %
- 4 stars
8,81 %
- 3 stars
1,09 %
- 2 stars
0,25 %
- 1 star
0,56 %
Affichage de 3 sur 11562
Révisé le 17 juin 2020
It is a must for those who are having trouble with object oriented programming. Coding in java was really easy for the object oriented approach. Really gained great insights into data structures.
Révisé le 9 mai 2019
The best online course I've taken so far. The autograder really does its job! The tests are so thorough that it always takes me several attempts to finish an assignment, but it is always worth it!
Révisé le 8 sept. 2020
It was an wonder ful course that makes me proud and I was little disappointed that I can't get my certification after completion of it I was really tried hard to get on to so provide certificate
Ouvrez de nouvelles portes avec Coursera Plus
Accès illimité à 10,000+ cours de niveau international, projets pratiques et programmes de certification prêts à l'emploi - tous inclus dans votre abonnement.
Faites progresser votre carrière avec un diplôme en ligne
Obtenez un diplôme auprès d’universités de renommée mondiale - 100 % en ligne
Rejoignez plus de 3 400 entreprises mondiales qui ont choisi Coursera pour les affaires
Améliorez les compétences de vos employés pour exceller dans l’économie numérique
Foire Aux Questions
Une fois inscrit, vous aurez accès à toutes les vidéos et à tous les travaux de programmation.
Non. Toutes les fonctionnalités de ce cours sont disponibles gratuitement.
Non. Conformément à la politique de l'University Certificates de Princeton, aucun certificat, titre ou rapport n'est délivré dans le cadre de ce cours.