// 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;
}
}
Relacionado
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
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.»
gracias brother
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)
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»);
}
eres un imbecil
#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;
}
no corre el programa en devC++ , tengo problemas llamando las funciones
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
necesito un cvodigo de cola urgente donde pueda encolar,desencolar e imprimir con campo de cedula seguidopo coma nombre y apellido
me marca error en la segunda linea de codigo
n0o es en la curta linea
en el using namespace std;
pued0o ejecutar el programa desde dev c++?
que porqueria llave gazzz
y tambien si me pudieran explicar muy en especifico la funcion return se los agradeceria mucho grasias
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…
no pues grasias a ti, y ps aqi me tendras muy seguido jajja
«gnr»
que vivael rock
me gusta mucho este foro
me gusta
corrijan sta mal
qué parte esta mal?, porque recuerdo haberlos probado antes…
pajuo