A função de partição é uma função que leva uma matriz a [l… u] como entrada. Aqui, eu é o limite inferior e você é o limite superior da matriz. O algoritmo encontra um índice q de modo que todos os elementos menos que um [q] caem na subarray a [l… q-1], e todos os elementos maiores que um [q] caem na subarray a [q+1… u]. A função de partição alcança isso usando um elemento dinâmico e dois ponteiros - ponteiro I e ponteiro j para a matriz.
Ponteiro J aponta para o primeiro elemento da matriz, e o ponteiro I é inicializado como J-1. A função itera através da matriz usando o ponteiro j. Para o elemento A [j], o elemento pode ser maior que o elemento dinâmico ou menor que o elemento pivô. Se o elemento for maior que o elemento pivô, o ponteiro J ficará incrementado, apontando para o próximo elemento. Se o elemento a [j] for menor que o elemento pivô, incrementamos o ponteiro I, trocamos um [i] e um [j]. A troca dos elementos ajuda. Como uma etapa final, a função de partição troca o elemento pivô com o elemento no índice I+1, movendo assim o elemento pivô na posição correta na matriz particionada.
Código fonte
Def Partition (arr, lb, ub):A melhor complexidade do tempo do Quicksort é O (n log n). No cenário de melhor caso, em cada chamada para o algoritmo, o algoritmo divide o problema em dois subproblemas de tamanho igual. A pior complexidade do tempo do algoritmo Quicksort é O (n^2). Isso ocorre quando o elemento de partição é sempre escolhido como o último elemento, e a matriz já está classificada.