segunda-feira, 26 de julho de 2021

Scilab: ordenando um vetor de forma simples e (razoavelmente) eficiente

 


Existem vários algoritmos para ordenar um vetor numérico. Entre esses algoritmos, podemos citar:

• Ordenação por troca:

BubbleSort (método da bolha)

QuickSort (método da troca e partição)

• Ordenação por inserção

InsertionSort (método da inserção direta)

BinaryInsertionSort (método da inserção direta binária)

• Ordenação por seleção

SelectionSort (método da seleção direta)

HeapSort (método da seleção em árvore)

• Outros métodos:

MergeSort (método da intercalação)

BucketSort (método da distribuição de chave)

Alguns desses algoritmos são simples de implementar, mas são lentos. O código abaixo usa o comando "max" do Scilab que localiza o maior valor dentro de um vetor e guarda esse valor em um novo vetor, logo o novo vetor já nasce ordenado (do maior para o menor). Esse método é muito mais eficiente que o método BubbleSort, por exemplo. Código:

NN = 1000; x = round(1000*rand(1,NN,'u')); 
//disp(x); ===> vetor desordenado
disp('ord. por maximo');
xo = x;
for k=1:max(size(x))
    [aa,bb]=max(x);
    xo(k) = aa;
    x(bb)=-1;
end
//disp(xo); ===> vetor ordenado

Nenhum comentário:

Postar um comentário