All pastes #460542 Raw Edit

Stuff

public text v1 · immutable
#460542 ·published 2007-04-27 03:01 UTC
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];   
}