Ir para conteúdo

bf0269714@gmail.com

Membros
  • Postagens

    2
  • Registro em

  • Última visita

  • Dias Ganhos

    1

Posts postados por bf0269714@gmail.com

  1. Boa tarde a todos,

     

    Estou tentando escrever um código de qquick sort em c++ para ordenar a seguinte lista: {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}, mas ao compliar não funciona, e me retorna apenas: Process returned -1073741571 (0xC00000FD)   execution time : 1.072 s
    Press any key to continue.

     

    Este é o código que estou usando:

     

    #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;
    }

     

    Alguém consegue identificar o erro?

     

    Muito obrigada!

    • Agradecer 1
  2. Estou utilizando este código para uma busca binária, porém 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...