rendered paste body#include<iostream>
using namespace std;
void ord_rapida(int arreglo[],int inf,int sup);
int escoger_piv(int arreglo[],int inf,int sup);
int reorganizar(int arreglo[],int inf,int sup,int piv);
void ord_rapida(int arreglo[],int inf,int sup)
{
int pos_piv,central;
if(inf<sup)
{
pos_piv=escoger_piv(arreglo,inf,sup);
if(pos_piv!=-1)
{
central=reorganizar(arreglo,inf,sup,arreglo[pos_piv]);
ord_rapida(arreglo,inf,central);
ord_rapida(arreglo,central+1,sup);
}
}
}
int escoger_piv(int arreglo[],int inf,int sup)
{
int i=inf;
do{
if(arreglo[i]>arreglo[i+1])
return i;
if(arreglo[i]<arreglo[i+1])
return (i+1);
i++;
}while(i<sup);
return -1;
}
int reorganizar(int arreglo[],int inf,int sup,int piv)
{
int i=inf,j=sup,aux;
while(i<j){
if(arreglo[i]>=piv&&arreglo[j]<piv)
{
aux=arreglo[i];
arreglo[i]=arreglo[j];
arreglo[j]=aux;
i++;j--;
}
if(arreglo[i]<piv&&arreglo[j]>=piv)
{
i++;j--;
}
if(arreglo[i]<piv)
i++;
if(arreglo[j]>=piv)
j--;
}
return j;
}
void main()
{
int arreglo[]={1,4,2,7,5,3,8,6,9,0};
cout<<"\nAreglo desordenado: ";
for(int i=0;i<10;i++)
cout<<" "<<arreglo[i];
ord_rapida(arreglo,0,9);
cout<<"\n\nAreglo ordenado: ";
for(int i=0;i<10;i++)
cout<<" "<<arreglo[i];
}