Ir para conteúdo
Fórum Script Brasil

Barbaraa

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Posts postados por Barbaraa

  1. Boa tarde!!

     

    Estou tentando escrever um código de Quick Sort par organizar a seguinte lista: {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}.

    Para isso, utilizei o código abaixo:

    #include <iostream>
    #include <stdlib.h>
    #include <string>
    #define TAM 10


    using namespace std;

    void imprimeVetor(int vetor[]){

    int i;
    cout << "\n";
    for(i = 0; i < TAM; i++){
        cout << "|" << vetor[i] << "|";
        }
    }

    void swap(int vetor[], int pos1, int pos2){
        int temp;
        temp = vetor[pos1];
        vetor[pos1] = vetor[pos2];
        vetor[pos2] = temp;
    }

    int partittion(int vetor[], int menor, int maior, int pivot){

        int i = menor;
        int j = maior;
        while(i <= maior){
            if(vetor[i]> pivot){
                i++;
            }
            else{
                swap(vetor, i, j);
                i++;
                j++;
            }
        }
        return j -1;
    }


    void quick_sort(int vetor[], int menor, int maior){

        menor = 0;
        maior = 10;

        if(menor < maior){
            int pivot = vetor[maior];
            int pos = partittion(vetor, menor, maior, pivot);

            quick_sort(vetor, menor, pos -1);
            quick_sort(vetor, pos +1, maior);
        }

    }

    int main(){

        int vetor[TAM] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};

        quick_sort(vetor, 0, TAM);

        imprimeVetor(vetor);

        return 0;
    }
     

    Porém ao compilá lo não obtenho o resultado esperado e sim apenas o seguinte retorno: 

    Process returned -1073741571 (0xC00000FD)   execution time : 1.256 s
    Press any key to continue.

     

     

    Alguém consegue me ajudar com esta questão?

     

    Muito obrigada!

  2. Boa tarde pessoal,

     

    Estou utilizando este código para uma busca binária, porem ao compilar, não me retorna a resposta desejada, não encontrei o erro, poderiam me dar um help? Muito obrigada.

     

    #include<iostream> // p. usar cout cin
    #include<new> // p. alocação de memória
    #include<string> // trabalhar com textos
    #include<stdlib.h> // implementa funções p. diversas operaões
    #include<locale.h>
    #define TAM 10

    using namespace std; // p. utilisar cout cin

    void imprimeVetor(int vetor[TAM]){

        int cont; // auxiliar contador

        //Imprime o vetor:
        for (cont = 0; cont < TAM; cont ++){
            cout << vetor[cont] << " - ";
        }
    }

    int buscaBinaria(int vetor[TAM], int valorProcurado, int *posicaoEncontrada){

        int esquerda = 0; // limite da esquerda
        int direita = TAM -1; // limite da direita
        int meio; // O meio onde fica o cursor

        while(esquerda <= direita){
            meio = (esquerda + direita)/2;

            //Quando o valor do meio é encontrado:
            if(valorProcurado == vetor[meio]){
                *posicaoEncontrada = meio;
                return 1;
            }else if(valorProcurado < vetor[meio]){
                esquerda = meio -1;
            }else{
                direita = meio +1;
            }
        }
        return -1;
    }


    int main(){

        setlocale(LC_ALL, "");

        int vetor[TAM] = {1, 29, 93, 75, 39, 03, 49, 90, 23, 20};
        int valorProcurado;
        int posicao, posicaoEncontrada;

        //Auxiliar contador
        int cont;

        //Imprime o vetor na tela:
        imprimeVetor(vetor);

        cout << "Qual número deseja encontrar?";
        cin >> valorProcurado;

        if(buscaBinaria(vetor, valorProcurado, &posicaoEncontrada) == 1){
            cout << "O valor foi encontrado na posição:" << posicaoEncontrada;
        }else{
            cout << "O valor não foi encontado.";
        }

        return 0;

    }

     

     

×
×
  • Criar Novo...