GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing fr.javascript.info — Un sous-tableau maximal retour au cours Un sous-tableau maximalimportance: 2 L’entrée est un tableau de nombres, par exemple La tâche est la suivante : trouver le sous-tableau contigu de Écrire la fonction Par exemple :
Si tous les éléments sont négatifs, cela signifie que nous n’en prenons aucun (le sous-tableau est vide), la somme est donc zéro :
S’il vous plaît essayez de penser à une solution rapide : O(n2) ou même à O(n) si vous le pouvez. Solution lenteNous pouvons calculer tous les subsums possibles. Le moyen le plus simple consiste à prendre chaque élément et à calculer les sommes de tous les sous-tableaux à partir de celui-ci. Par exemple, pour
Le code est en réalité une boucle imbriquée : la boucle externe recouvrant les éléments du tableau, et l’interne compte les sous-sommes commençant par l’élément en cours.
La solution a une complexité temporelle de O(n2). En d’autres termes, si nous augmentons la taille du tableau 2 fois, l’algorithme fonctionnera 4 fois plus longtemps. Pour les grands tableaux (1’000, 10’000 éléments ou plus), de tels algorithmes peuvent conduire à une grande lenteur. Solution rapideParcourons le tableau et conservons la somme partielle actuelle des éléments dans la variable Si la description est trop vague, veuillez voir le code, il est assez court :
L’algorithme nécessite exactement 1 passage de tableau, la complexité temporelle est donc O(n). Vous pouvez trouver plus d’informations détaillées sur l’algorithme ici : Maximum subarray problem. Si la raison de ce fonctionnement n’est pas encore évidente, tracez l’algorithme à partir des exemples ci-dessus et voyez comment il fonctionne. |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |