Aplicação feita em python e react para ler arquivos csv e ordenar de acordo com os principais métodos.
Verifique se você tem Node.js e npm já instalados.
-
Clonar ou baixar o repositório
$ git clone https://github.com/thallis-andre/Sorting-Algorithms.git $ cd upload-front
-
Instalar dependências
$ npm install
-
Iniciando a aplicação
$ npm start
Sua aplicação executará em localhost:3000.
Verifique se você tem Python e Pip já instalados.
-
Clonar ou baixar o repositório
$ git clone https://github.com/thallis-andre/Sorting-Algorithms.git $ cd upload-back
-
Instalar dependências
$ pip install flask flask-jsonpify flask-sqlalchemy flask-restful flask_cors
-
Iniciando a aplicação
$ python server.py
O quicksort adota a estratégia de divisão e conquista. A estratégia consiste em rearranjar as chaves de modo que as chaves "menores" precedam as chaves "maiores". Em seguida o quicksort ordena as duas sublistas de chaves menores e maiores recursivamente até que a lista completa se encontre ordenada. Os passos são:
-
Escolha um elemento da lista, denominado pivô;
-
Particiona: rearranje a lista de forma que todos os elementos anteriores ao pivô sejam menores que ele, e todos os elementos posteriores ao pivô sejam maiores que ele. Ao fim do processo o pivô estará em sua posição final e haverá duas sub listas não ordenadas. Essa operação é denominada partição;
-
Recursivamente ordene a sub lista dos elementos menores e a sub lista dos elementos maiores;
A idéia básica do Merge Sort é criar uma sequência ordenada a partir de duas outras também ordenadas. Para isso, o algoritmo Merge Sort divide a sequência original em pares de dados, agrupa estes pares na ordem desejada; depois as agrupa as sequências de pares já ordenados, formando uma nova sequência ordenada de quatro elementos, e assim por diante, até ter toda a sequência ordenada. Os passos são:
-
Dividir: Dividir os dados em subsequências pequenas. Este passo é realizado recursivamente, iniciando com a divisão do vetor de n elementos em duas metades, cada uma das metades é novamente dividida em duas novas metades e assim por diante, até que não seja mais possível a divisão (ou seja, sobrem n vetores com um elemento cada).
-
Conquistar: Classificar as duas metades recursivamente aplicando o merge sort.
-
Combinar: Juntar as duas metades em um único conjunto já classificado. Para completar a ordenação do vetor original de n elementos, faz-se o merge ou a fusão dos sub-vetores já ordenados.
Esse método começa a analisar o vetor a partir da segunda posição. A partir dessa posição cada elemento é inserido na partição inicial em sua posição correta. A inserção do elemento da posição correta é efetuada movendo-se os itens com chaves maiores/menores para a direita e então inserindo-o na posição que ficou vazia. Neste processo de alternar comparações e movimentação de registros existem duas situações que podem causar o término do processo, a primeira é quando um item com chave menor que o item em consideração é encontrado e a segunda situação é quando o final da seqüência destino é atingida (à esquerda).
Este método é um dos mais simples que existe, a sua proposta consiste em a cada iteração localizar o elemento de menor ou maior valor do array e inseri-lo na posição correta da nova lista que será retornada. Na execução o array é dividido em duas partes, uma contendo os elementos já ordenados e outra contendo os elementos ainda não ordenados. No início, a parte ordenada está vazia e a desordenada contém todos os elementos, no final do processo a parte ordenada apresentará (n-1) elementos e a desordenada terá um elemento.