Répertoire d'articles
Aperçu
Ce chapitre présente les concepts de base des structures de données et des algorithmes, ainsi que les méthodes de base de l'analyse des algorithmes, qui sont à la base de l'apprentissage des chapitres suivants. La structure organisationnelle des points de connaissance de ce chapitre est illustrée dans la figure ci-dessous:
Points clés / difficultés / points
L'objectif de ce chapitre est :
- Concepts de base de la structure des données;
- La structure logique des données, la structure de stockage et la relation entre les deux;
- Algorithmes et caractéristiques;
- Représentation d'un grand 0.
La difficulté de ce chapitre est :
- Définition et utilisation de types de données abstraits;
- Analyse de la complexité temporelle de l'algorithme.
Ce chapitre comprendra deux lignes principales: une ligne principale est la structure des données, y compris l'objet de recherche de la structure des données et des concepts associés, et l'autre ligne principale est l'algorithme, y compris les concepts liés aux algorithmes, les méthodes de description et les méthodes d'analyse de la complexité du temps.
Dans la partie structure de données , commencez par le processus de résolution de problèmes et comprenez "structure de données + algorithme = programme", faites attention à la relation entre la structure des données et la conception du programme. Le concept de base de la partie structure de données est l'élément de données, faites attention à la relation entre les éléments de données à travers des exemples spécifiques; le concept important de la partie structure de données est la structure de données, nous devons saisir deux aspects: la structure logique et la structure de stockage, et faire attention à saisir les deux La relation entre.
Dans la partie algorithme , le concept et les caractéristiques de l'algorithme doivent être les points de base, et les caractéristiques de l'algorithme d'application doivent être pris en compte dans l'enseignement futur. N'apprenez pas le concept de manière isolée, faites attention à l'extension et à l'application du concept; pour l'analyse de la performance temporelle de l'algorithme, faites attention En se concentrant sur le taux de croissance, c'est-à-dire l'ordre de grandeur du nombre d'exécutions de l'instruction de base, trois points clés sont soulignés: l'instruction de base, le nombre d'exécutions et l'ordre de grandeur. Le résultat de l'analyse des performances temporelles de l'algorithme est l'ordre de grandeur représenté par la notation en gros O.
Enfin, il est souligné que la structure des données et l'analyse des algorithmes visent de grandes quantités de données, c'est-à-dire l'organisation de grandes quantités de données et l'efficacité de grandes quantités de traitement de données. Avec l'augmentation de la vitesse de calcul informatique, la demande de programmes rapides capables de gérer de grandes quantités de données est devenue de plus en plus forte.
Points de connaissance
- Le processus général de conception de programme est «problème → idée → algorithme → programme», et son essence est la représentation et le traitement des données. La tâche principale de la représentation des données est d'abstraire le modèle de données du problème et de convertir le modèle de la représentation externe de l'ordinateur à la représentation interne de l'ordinateur; la tâche principale du traitement des données est de décrire abstraite la méthode de résolution de problème, c'est-à-dire de concevoir l'algorithme.
- La structure des données fait l'objet de l'étude des objets de fonctionnement des ordinateurs dans des problèmes non numériques et des relations et opérations entre eux.
- L'élément de données est l'unité de base des données, qui est généralement considérée et traitée comme un tout dans les programmes informatiques. L'élément de données est la plus petite unité de données impliquée dans la discussion de la structure de données, et l'élément de données n'est généralement pas pris en compte.
- La structure de données fait référence à une collection d'éléments de données qui ont une certaine relation les uns avec les autres. Selon différents points de vue, la structure des données est divisée en structure logique et structure de stockage. La structure logique des données fait référence à la relation logique globale entre les éléments de données et la structure de stockage des données est la représentation des données et de leur structure logique dans un ordinateur.
- Selon les différentes relations logiques entre les éléments de données, les structures de données sont divisées en quatre catégories: collections, structures linéaires, arborescences et structures de graphes.
- La structure de données a généralement deux méthodes de stockage: la structure de stockage séquentiel et la structure de stockage liée.
- Un type de données abstrait est un terme général désignant un modèle de données (c'est-à-dire une structure de données) et un ensemble d'opérations définies sur la structure.
- Un algorithme est une description des étapes pour résoudre un problème spécifique, une séquence finie d'instructions. Les algorithmes doivent répondre aux cinq caractéristiques importantes suivantes: entrée, sortie, finitude, certitude et faisabilité.
- En plus de satisfaire les cinq caractéristiques de l'algorithme, un «bon» algorithme possède également les caractéristiques suivantes: exactitude, robustesse, simplicité, hiérarchie abstraite et efficacité.
- Les méthodes couramment utilisées pour décrire les algorithmes comprennent le langage naturel, les organigrammes, les langages de programmation, le pseudo-code, etc. Parmi eux, le pseudo-code est une méthode plus appropriée pour décrire les algorithmes, appelée «langage d'algorithme» ou «premier langage».
- Il existe deux méthodes pour mesurer l'efficacité d'un algorithme: les méthodes post-statistiques et les méthodes de pré-analyse et d'estimation.
- En laissant de côté les facteurs liés aux logiciels et au matériel informatique, le facteur le plus important affectant le coût en temps de l'algorithme est l'échelle du problème. L'échelle du problème se réfère à la quantité d'entrées et, en général, elle peut être obtenue à partir de la description du problème.
- Afin de refléter objectivement le temps d'exécution d'un algorithme, le nombre d'exécutions des phrases de base dans l'algorithme peut être utilisé pour mesurer la charge de travail de l'algorithme. L'instruction de base est une instruction dont les temps d'exécution sont proportionnels aux temps d'exécution de l'ensemble de l'algorithme.
- La complexité temporelle est généralement représentée par la notation en gros O, cette méthode est en fait une méthode d'estimation.
- Un moyen simple de résoudre la complexité temporelle de l'algorithme est de trouver la phrase avec le plus de temps d'exécution parmi toutes les phrases en tant que phrase de base, de calculer l'ordre de grandeur des temps d'exécution de la phrase de base et de la mettre dans la grande notation O.
Exercice
Abstraction des problèmes et programmation
La manière de communiquer efficacement entre les humains et les ordinateurs est (A).
A. Programme B. Langage C. Énoncé D. Algorithme
La clé de la conception d'un programme est (C).
A. Structure des données et algorithme B. Représentation et traitement des données CA et B concernent
tous l'organisation et le traitement des données de toutes les questions abordées dans ce cours. (×)
La pensée utilisée dans le processus de conception du programme est (D).
A. Pensée logique B. Pensée abstraite C. Pensée par image D. Pensée informatique
Concepts de base de la structure des données La structure
logique n'a rien à voir avec le contenu et la forme de l'élément de données lui-même. (√)
La réalisation d'opérations de base basées sur une certaine structure logique est unique. (×) En
théorie, la structure de stockage n'a rien à voir avec le langage de programmation. (×)
Le point central lors de la discussion de la structure des données est (B).
A. Données B. Elément de données C. Objet de données D. Elément de données
Les données traitées par le compilateur sont (C).
A. Langage B. Énoncé C. Programme source D. Chaîne
Selon différents points de vue, la structure des données est divisée en structure logique et structure de stockage, et le point de vue se réfère à (A).
A. Mémoire B. Stockage externe C. Fichier D. Problème
Concepts de base des algorithmes Les
organigrammes sont la méthode la plus couramment utilisée pour décrire les algorithmes. (×)
Comme les langages de programmation, le pseudocode a également des normes internationales. (×)
Le déterminisme de l'algorithme exige que pour la même entrée, la même sortie soit obtenue. (√) L'
algorithme doit satisfaire l'exactitude, sinon il n'y aura pas de valeur existentielle. (×)
(D) est appelé "langage d'algorithme".
A. Langage naturel B. Organigramme C. Langage de programmation D. Pseudo-code
Analyse de l'algorithme
La complexité temporelle de l'algorithme est déterminée par le nombre d'exécutions des phrases de base dans l'algorithme. (×)
La complexité temporelle de l'algorithme est un calcul précis des ressources consommées par l'algorithme. (×)
La complexité spatiale d'un algorithme fait référence à l'espace occupé par les données d'entrée / sortie et à l'espace auxiliaire pour l'exécution de l'algorithme. (×)
L'algorithme in -situ ou l'algorithme in-situ signifie que l'algorithme ne nécessite pas d'espace auxiliaire pendant l'exécution. (×) Dans le
segment de programme suivant, l'échelle du problème est (H), la phrase de base est (C) et la complexité temporelle est (G).
A. (1)
B. (2)
C. (3)
D. (4)
EO ( n 2 n ^ 2n2 )
FO (M 2 M ^ 2M2 )
GO (m × n)
HO (m × n / 2)
(1)for(i=0;i<m;i++)
{
(2) for(j=0;j<n/2;j++)
(3) cout<<data[i][j];
(4) cout<<endl;
}
Référence: «Structure des données (du concept à la mise en œuvre C ++)» Tsinghua University Press, Wang Hongmei