2010-04-22 11 views
-1

Si nous avons besoin d'implémenter une fonction qui prend un tableau d'entiers et renvoie l'entier maximum dans la collection, en supposant que la longueur du tableau est inférieure à 1000. Utiliseriez-vous Bubble Trier ou fusionner Trier et pourquoi?Algorithme pour nombre entier maximal dans un tableau d'entiers

En outre, qu'arrive-t-il au choix de l'algorithme ci-dessus, si la longueur du tableau est supérieure à 1000? Je suis un peu confus sur pourquoi je devrais utiliser un algorithme particulier sur un autre. Est-ce juste à cause de sa complexité et du temps ou d'autres facteurs impliqués dans cela? Que faire si je dois tester la fonction ci-dessus et que cela prend beaucoup plus de temps pour un algorithme simple et moins de temps pour un algorithme complexe?

+3

Cela semble plutôt comme les devoirs. Pourriez-vous s'il vous plaît signaler comme tel si c'est le cas? – Joey

+2

si la longueur du tableau est supérieure à 1000, eh bien, les bulles vont s'éteindre. –

+1

Cela ne mérite pas deux downvotes juste parce que ça sent le devoir. – defines

Répondre

18

Je ne voudrais pas trier du tout. Je traverse juste la rangée et garde la plus grande comme je vais. Cela prend le temps O (N), alors que les algorithmes de tri ne feront généralement pas mieux que O (N * log (N)).

+1

+1: L'intention de l'OP de trier est bizarre pour cela. Je me demande s'il y a une autre exigence sous-jacente. –

+1

Le tri peut aussi être pire que O (N * logN) si vous choisissez un mauvais algorithme – Gishu

0

Appelons la longueur de votre tableau N.

Tri tableau à l'aide Trier Bubble prend à peu près dans l'ordre des unités N * N de temps. Le tri en utilisant Merge Sort prend dans l'ordre de N * log N unités de temps.

Il suffit de regarder chaque élément un après l'autre et de garder une trace de l'élément le plus grand qui prendra de l'ordre de N unités de temps.

Par conséquent, utilisez la dernière méthode.

2

Eh bien, si vous devez trier, alors utilisez le tri par fusion car c'est beaucoup plus rapide que le tri à bulles. Pour 1000 éléments et un seul tri vous ne remarquerez probablement pas la différence sur un ordinateur moderne, mais pour plus d'éléments (je pense> 10 000) la différence devient notieceable.