segunda-feira, 28 de maio de 2012

Algoritmo BUBBLESORT

// Algoritmo BUBBLESORT
// Função : Demonstração para o programa VisuAlg
// Autor : Claudio Morgado de Souza
// Data : 08/09/2002
algoritmo "Bubble Sort"
dos
var
   a, b : inteiro
   temp : real
   x : vetor[1..10] de real
inicio
// Leitura dos dados
aleatorio 0,100,3
para a de 1 ate 10 faca
   leia(x[a])
fimpara
// Ordenação
para a de 1 ate 10 faca
   para b de 1 ate 9 faca
      se x[b] > x[b+1] entao
         temp <- x[b]
         x[b] <- x[b+1]
         x[b+1] <- temp
      fimse
   fimpara
fimpara
// Impressão dos dados ordenados
para a de 1 ate 10 faca
   escreval(a:3," - ", x[a] : 10 : 3)
fimpara
fimalgoritmo

3 comentários:

  1. De que maneira seria o quicksort nesta mesma linguagem ?

    ResponderExcluir
  2. Quicksort

    O algoritmo Quicksort é um método de ordenação muito rápido e eficiente, inventado por C.A.R. Hoare em 19601 , quando visitou a Universidade de Moscovo como estudante. Naquela época, Hoare trabalhou em um projeto de tradução de máquina para o National Physical Laboratory. Ele criou o 'Quicksort ao tentar traduzir um dicionário de inglês para russo, ordenando as palavras, tendo como objetivo reduzir o problema original em subproblemas que possam ser resolvidos mais facil e rapidamente. Foi publicado em 1962 após uma série de refinamentos.2

    O Quicksort é um algoritmo de ordenação por comparação não-estável.

    http://pt.wikipedia.org/wiki/Quicksort

    Resumindo, não tenho ele em VisuAlg

    ResponderExcluir
  3. procedimento QuickSort(X[], IniVet, FimVet)
    var
    i, j, pivo, aux
    início
    i <- IniVet
    j <- FimVet
    pivo <- X[(IniVet + FimVet) div 2]
    enquanto(i < j)
    | enquanto (X[i] < pivo) faça
    | | i <- i + 1
    | fimEnquanto
    | enquanto (X[j] > pivo) faça
    | | j <- j - 1
    | fimEnquanto
    | se (i <= j) então
    | | aux <- X[i]
    | | X[i] <- X[j]
    | | X[j] <- aux
    | | i <- i + 1
    | | j <- j - 1
    | fimSe
    fimEnquanto
    se (j > IniVet) então
    | QuickSort(X, IniVet, j)
    fimSe
    se (i < FimVet) então
    | QuickSort(X, i, FimVet)
    fimse
    fimprocedimento

    ResponderExcluir