DEV Community

Daniel Dormin
Daniel Dormin

Posted on

6

Ordenação por seleção - Selection Sort

Seguindo nossos estudos vamos agora para o Selection Sort, um algoritmo simples que é um pouquinho diferente que o último citado o Bubble sort seguindo a notação Big O a complexidade é O(n²)
não é um algoritmo rápido mas como nosso objetivo é estudo ele nos serve bem :D

Como ele funciona?

A ordenação por seleção é um algoritmo de ordenação baseado em se passar sempre o menor valor do vetor para a primeira posição (ou o maior dependendo da ordem requerida), depois o de segundo menor valor para a segunda posição, e assim é feito sucessivamente.

Image description
Na imagem acima é exemplificado!

Ou seja ele é beeem parecido com o bubble sort que joga o maior valor para o final do vetor, em velocidade nós não ganhamos muito ¯_ (ツ)_/¯

Mas vamos para o código

let arr = [17, 14, 23, 2, 4, 9, 15, 1, 0, 3, 5]

for(let i = 0; i < arr.length; i++){
    let min = i
    let aux 
    for(let j = i + 1; j <= arr.length; j++){
        if(arr[j] < arr[min]){
            min = j
        }
    }
    if (i != min) {
        aux = arr[i]
        arr[i] = arr[min]
        arr[min] = aux
    }

}
console.log(arr)
Enter fullscreen mode Exit fullscreen mode

Como dito o código não é muito diferente, ainda temos um loop aninhado que resolve um valor por vez como é visto na imagem.
Muito obrigado por ler até aqui, fiquem a vontade em me enviar dúvidas comentários ou críticas.

Referências

Entendo algoritmos - Aditya Y. Bhargava

Wikpédia selection sort

SurveyJS custom survey software

JavaScript UI Libraries for Surveys and Forms

SurveyJS lets you build a JSON-based form management system that integrates with any backend, giving you full control over your data and no user limits. Includes support for custom question types, skip logic, integrated CCS editor, PDF export, real-time analytics & more.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay