Código C++ – Ordenamiento Quick Sort

// Quick Sort
// Codificado por Beastieux

#include <iostream>
#define largo 100
#include "leearreglo.h"
using namespace std;

void quicksort(int A[], int izq, int der)
{
    int i, j, x, aux;
    i = izq;
    j = der;
    x = A[(izq + der) / 2];
    do
    {
        while ((A[i] < x) && (j <= der))
        {
            i++;
        }

        while ((x < A[j]) && (j > izq))
        {
            j--;
        }

        if (i <= j)
        {
            aux = A[i];
            A[i] = A[j];
            A[j] = aux;
            i++;
            j--;
        }

    } while (i <= j);

    if (izq < j)
        quicksort(A, izq, j);
    if (i < der)
        quicksort(A, i, der);
}

int main()
{
    int A[largo], n;
    do
    {
        cout << "Cantidad de numeros a ingresar: ";
        cin >> n;
        if (n <= 0 || n > largo)
            cout << "Debe ingresar un valor > a 0 y < a " << largo << endl;
    } while (n <= 0 || n > largo);

    leeCadena(n, A);
    quicksort(A, 0, n - 1);
    muestraCadena(n, A);

    return 0;
}
#include <iostream>
using namespace std;

void leeCadena(int cant, int n[])
{
    int i;
    for (i = 0; i < cant; i++)
    {
        cout << "Ingresa numero " << i + 1 << ": ";
        cin >> n[i];
    }
}

void muestraCadena(int cant, int n[])
{
    int i;
    for (i = 0; i < cant; i++)
    {
        cout << n[i] << endl;
    }
}

22 thoughts on “Código C++ – Ordenamiento Quick Sort

  1. el pivot puede perderse en el proceso, la idea es que los menores queden a la izq del pivot y los mayores a la derecha pero aqui es probable que el pivot quede donde sea, se parece al quick pero no creo que funcione igual, también habría que evaluar la eficiencia supongo que será menor

  2. AMIGO, NO SOY DE LOS QUE COMENTA ESTE TIPO DE COSAS… SIN EMBARGO ME URGE REALIZARTE UNA RECOMENDACIÓN, EL TEMA DE FUNCIONES ES DISTINTO AL TEMA DE MÉTODOS DE ORDENAMIENTO, POR ENDE ES INÚTIL QUE INCLUYAS FUNCIONES Y LAS LLAMES DESDE OTRA FUNCIÓN, PUESTO QUE DE ESTA FORMA EL EJEMPLO ES MENOS COMPRENSIBLE PARA LOS QUE LEEN ESTO(Y NO TIENEN CONOCIMIENDO), O SI NO CREES QUE SEA ASÍ… AL MENOS CAMBIA EL NOMBRE A «APLICANDO EL MÉTODO QUICKSORT LIGADO A FUNCIONES.»

  3. Por lo que veo entra las n veces en recurcion que seria el tamaño del arreglo o la porcion que se especifica del areglo (int der) el codigo original esta bien

    Pero muy bien (POR FAVOR DE NO COPIAR EL CODIGO SOLO TE ENGAÑAS A TI MISMO)

  4. Me sirvio excelente hice algunas modificaciones minimas,y el Codigo final ya naadamas para pegar es este (UNA COSA ME GUSTARIA QUE AL LADITO PUSIERAN SEÑALACIONES DEL PROCESO, ASI ANALISAMOS MUCHO MEJOR LO QUE SUCEDE CON ESTE METODO DE ORDENAMIENTO)
    //Quick Sort
    //Codificado por sAfOrAs
    #include «stdafx.h»
    #include
    #define largo 100
    using namespace std;
    void leeCadena(int cant,int n[])
    {
    int i;
    for(i=0;i<cant;i++)
    {
    cout<<"Ingresa numero "<<i+1<>n[i];
    }

    }

    void muestraCadena(int cant,int n[])
    {
    int i;
    for(i=0;i<cant;i++)
    {
    cout<<n[i]<<endl;
    }
    }
    void quicksort(int A[],int izq, int der )
    {
    int i, j, x , aux;
    i = izq;
    j = der;
    x = A[ (izq + der) /2 ];
    do{
    while( (A[i] < x) && (j <= der) )
    {
    i++;
    }

    while( (x izq) )
    {
    j–;
    }

    if( i <= j )
    {
    aux = A[i]; A[i] = A[j]; A[j] = aux;
    i++; j–;
    }

    }while( i <= j );

    if( izq < j )
    quicksort( A, izq, j );
    if( i < der )
    quicksort( A, i, der );
    }

    void main ()
    {
    int A[largo],n;
    do{
    cout<>n;
    if(nlargo)
    cout< a 0 y < a "<<largo<<endl;
    }while(nlargo);
    leeCadena(n,A);
    quicksort(A,0,n-1);
    muestraCadena(n,A);
    system(«PAUSE»);

    }

  5. #define n 8
    int A[n]={1,4,8,9,5,2,3,4};

    void quickSort(int l, int r){
    int i = l, j = r;
    int tmp = A[(i + j) >> 1];
    do{
    while(i <= r and A[i] < tmp) i++;
    while(l <= j and tmp < A[j]) j–;

    if(i <= j) swap(A[i], A[j]), i++, j–;
    }while(i <= j);

    if(l < j) quickSort(l, j);
    if(i < r) quickSort(i, r);
    }

    int main(){
    quickSort(0, n-1);
    for(int i=0; i<n; ++i) cout << A[i] << endl;
    }

  6. es una tarea de un codigo quisort en una matriz, array o arreglo por dos tabla una trabajador y familiares seguido los campos por coma ej; ced,apellido,nombre y fecha de nac esta es tabla trabajador y tabla familiares cedula del trabajador,ced familiar,apellido, parestesco-trabajador; select sql urgent responder

  7. necesito un cvodigo de cola urgente donde pueda encolar,desencolar e imprimir con campo de cedula seguidopo coma nombre y apellido

    1. Hola, como estas, on se si te refieres a este topic o a explicarte la funcioón return desde cero, pero como ves aquí no usamos explicitamente una función return, pero si hacemos uso de la recursividad , por lo cual supondré que te refieres a que te explique como funciona return desde cero. En si la función return lo que hace es devolver un valor de un tipo de dato respectivo a una variable del mismo tipo de dato, ejem:

      int mi_funcion() //int indica que retornara un tipo int, puede ser el tipo de dato que quieras siempre y cuando devuelvas ese mismo tipo de dato o también usa void cuando no retornará ningún valor
      {
      int a;
      a=10;

      return a; //retorna 10
      }

      void main()
      {
      int b;
      b=mi_funcion(); //mi función retornará 10, entonces b sera igual a 10
      }

      un saludo, gracias por visitar este sitio…

Deja un comentario