Пример #1
0
        private static LimiteParticoes particao(Item[] v, int esq, int dir)
        {
            LimiteParticoes p = new LimiteParticoes();

            p.i = esq;
            p.j = dir;
            Item x = v[(p.i + p.j) / 2]; //obter o pivô x

            do
            {
                while (x.Compara(v[p.i]) > 0)
                {
                    p.i++;
                }
                while (x.Compara(v[p.j]) < 0)
                {
                    p.j--;
                }
                if (p.i <= p.j)
                {
                    Item w = v[p.i];
                    v[p.i] = v[p.j];
                    v[p.j] = w;
                    p.i++;
                    p.j--;
                }
            } while (p.i <= p.j);
            return(p);
        }
Пример #2
0
        /// <summary>
        /// Método de ordenar do QuickSort
        /// </summary>
        private static void Ordena(Item[] v, int esq, int dir)
        {
            LimiteParticoes p = particao(v, esq, dir);

            if (esq < p.j)
            {
                Ordena(v, esq, p.j);
            }
            if (p.i < dir)
            {
                Ordena(v, p.i, dir);
            }
        }