Jump to content


Pedro Marcondes

Member Since 05/06/2015
Offline Last Active 12/04/2018, 16:37
-----

Topics I've Started

Ordenaçao HeapSort em C++

05/06/2015, 01:54

Gostaria de saber como fica a ordenação HeapSort que está em C++ em visualg, pois sou iniciante e estou aprendendo visualg, obrigado pela atençao
 
template<class T>
void heap_sort( std::vector<T> &lista )
{
    int tam = static_cast<int>( lista.size() ), i;
 
    for( i = tam/2 - 1; i >= 0; --i )
    {
       maxHeapify(lista, i , tam );
    }
 
    std::vector<T>::reverse_iterator elem;
 
    for( elem = lista.rbegin(); elem != lista.rend(); elem++ )
    {
       std::iter_swap( elem, lista.begin() );
       maxHeapify( lista, 0, --tam );
    }
}
 
template<class T>
void maxHeapify( std::vector<T> &lista, const int pos, const int n )
{
    int max = 2 * pos + 1;
 
    if( max < n )
    {
       if( (max+1) < n && lista.at(max) < lista.at(max+1) )
       {
          ++max;
       }
       if( lista.at(max) > lista.at(pos) )
       {
          std::swap( lista[max], lista[pos] );
          maxHeapify( lista, max, n );
       }
    }
}
 

Como faz ordenaçao shellsort?

05/06/2015, 01:48

Gostaria de saber como fica esse codigo de ordenaçao shellSort em visualg, já tentei fazer lá mas nao sai nada, obg pela atençao
 
voidshellSort(int*vet,intsize){
int i , j ,value;
int gap =1;
while(gap <size){
gap=3*gap+1;
}
while( gap >1){
gap/=3;
for(i = gap; i <size; i++){
value=vet[i];
j= i - gap;
while(j >=0&&value<vet[j]){
vet[j + gap]=vet[j];
j-= gap;
}
vet[j + gap]=value;
}
}
}

O que há de errado?

05/06/2015, 01:37

estou tentando ordenar um vetor utilizando a ordenação QuickSort em visualg ,mas não esta funcionando, alguem poderia ajudar? Obrigado pela atenção.

 

código:

 

var
 
vetorAleatorio: vetor [1..100] de inteiro
x: vetor [1..100] de inteiro
i,j,minimo,auxiliar:inteiro
a, pivo,IniVet,FimVet:inteiro
 
procedimento QuickSort(X[], IniVet, FimVet:inteiro)
i <- 1
j <- 100
pivo <- X[(1 + 100) div 2]
enquanto(i < j)
   enquanto (X[i] < pivo) faca
      i <- i + 1
   fimenquanto
   enquanto (X[j] > pivo) faca
      j <- j - 1
   fimEnquanto
   se (i <= j) então
      auxiliar  <- X[i]
      X[i] <- X[j]
      X[j] <- auxiliar
      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
 
inicio
//criando vetor aleatorio
 
para i de 1 ate 100 faca
   vetorAleatorio[i]<-RandI(100)
fimpara
 
//copiando o vetor aleatorio para os outros
 
para i de 1 ate 100 faca
   x[i]<-vetorAleatorio[i]
fimpara
 
cronometro on
QuickSort()
cronometro off
 
fimalgoritmo

Codigo de C para Visualg

05/06/2015, 01:36

Gostaria de saber como fica esse codigo de ordenaçao Comb Sort que ta em C para visualg,já tentei fazer de diversas formas mas nao consegui fazer , gostaria de aprender pelo visualg para entender e aplicar, obrigado pela atençao

 

void combsort(int *arr, int size) {
    float shrink_factor = 1.247330950103979;
    int gap = size, swapped = 1, swap, i;
 
    while ((gap > 1) || swapped) {
        if (gap > 1)
           gap = gap / shrink_factor;
 
        swapped = 0;
        i = 0;
 
        while ((gap + i) < size) {
            if (arr[i] - arr[i + gap] > 0) {
                swap = arr[i];
                arr[i] = arr[i + gap];
                arr[i + gap] = swap;
                swapped = 1;
            }
            ++i;
        }
    }
}

IPB Skin By Virteq