Le moyen le plus rapide pour vérifier si un tableau est trié

Vu qu'il n'y est un tableau retourné par une fonction qui est de très grande taille.

Quel sera le fastest approche pour tester si le tableau est trié?

Une approche la plus simple sera de:

///<summary>
///Determines if int array is sorted from 0 -> Max
///</summary>
public static bool IsSorted(int[] arr)
{
for (int i = 1; i < arr.Length; i++)
{
    if (arr[i - 1] > arr[i])
    {
    return false;
    }
}
return true;
}
y at-il seulement séquentiel des éléments?
Si vous voulez un meilleur algorithme que O(n), vous aurez à tolérer certaines erreurs.
Une autre solution pourrait être d'envelopper la liste dans un Flux de données (en supposant que vous savez le tableau est rempli, ce qui int[] dans votre exemple) et de les lire sizeof(int) octets à la fois, en les comparant avec la précédente octets lus. Que gagnerez-vous l'incrémentation de l'index du compteur, mais pas sûr de ce qu'il va faire pour la mise en cache.

OriginalL'auteur Cannon | 2012-08-16