Ask Question

Name:
Title:
Your Question:

Answer Question

Name:
Your Answer:
User Submitted Source Code!


Description:
  teste
Language: C/C++
Code:
#include<stdio.h>
#include <time.h>
#include <conio.h>
#include <stdlib.h>
 
void quick_sort(int vetor[], int esq, int dir);
void gerarVetorCrescente(int vetor[], int tamanho);
void gerarVetorDecrescente(int vetor[], int tamanho);
void gerarVetorAleatorio(int vetor[], int tamanho);

int _trocas;
 
int main(void)
{
    _trocas = 0;
    int n, tamanho, dir, esq;
    tamanho = 25000;
    int vetor[tamanho];
    dir = sizeof((vetor)) / sizeof(int);
    esq = 0;
    clock_t t0, tf;
    double tempo_gasto;

    gerarVetorCrescente(vetor, tamanho);
    
    //Mede tempo de execucao
    t0 = clock();
    quick_sort(vetor, esq, dir);
    tf = clock();
    tempo_gasto = ( (double) (tf - t0) ) * 1000 / CLOCKS_PER_SEC;

    printf("tamanho: %d\n",tamanho);
    printf("Tempo gasto: %lf ms\n", tempo_gasto);
    printf("Numero de trocas: %d\n",_trocas);
 
    printf("Ordenado: \n");
    for (n = 0; n < 30; ++n) {
        printf("%d ",vetor[n] );
    }
    return 0;
}
 
 
void quick_sort(int vetor[], int esq, int dir){
    
    int pivo = vetor[(esq + dir) / 2];
    int i = esq;
    int j = dir;
    int aux;

    do{
        while ( vetor[i] < pivo && i < dir ) i++;
        while ( vetor[j] > pivo && j > esq ) j--;
        if ( i <= j ) {
            aux = vetor[i];
            vetor[i] = vetor[j];
            vetor[j] = aux;
            i++;
            j--;
            _trocas++;
        }
    }while ( i <= j );

    if ( esq < j ) quick_sort(vetor, esq, j);
    if ( i < dir ) quick_sort(vetor, i, dir);

    return;
}

void gerarVetorCrescente(int vetor[], int tamanho){
    int i;
    for (i = 0; i < tamanho; ++i) {
        vetor[i] = i;
    }

    return;
}
void gerarVetorDecrescente(int vetor[], int tamanho){
    int i, k;
    k = tamanho;
    for (i = 0; i < tamanho; i++) {
        vetor[i] = k;
        k -= 1;
    }

    return;
}


void gerarVetorAleatorio(int vetor[], int tamanho){
    int i;
    for (i = 0; i < tamanho; ++i) {
        vetor[i] = rand() % tamanho;
    }
    
    return;
}
     
Comments: