Nose

Páginas: 2 (379 palabras) Publicado: 19 de octubre de 2010
1.- Tomar un “pivote” del conjunto de elementos, en particular será el elemento de en medio y en caso de que sean pares tomaremos el elemento de la derecha.
2.- Definimos un límite superior einferior.
3.- Hacer los cambios necesarios para que el elemento pivote se encuentre a la derecha.
4.- Para lograr esto de hace la condición de comparar el pivote con el elemento superior e inferior, si elpivote es mayor al elemento se intercambia un lugar (a la derecha), en caso contrario se permanece en el mismo lugar.
5.- Ahora se aplica el método “divide y vencerás”, partiendo en dos al arreglode números.
6.- Se vuelve a aplicar el procedimiento desde el paso 1.
7.- Hacer las divisiones necesarias para lograr tener todas las “partes” ordenadas.
8.- Volver a juntar todas las “partes”.
9.-Fin algoritmo

Código en C++ y corrida en pantalla

#include<stdio.h>
#include<conio.h>
#define N 100
void quicksort(int a[],int primero ,int ultimo);
void entrada(int a[], intn);
void imprimirLista(int a[], int n);
int main(){
int primero,n;
int a[N];
do{
printf("\nCuantos numeros quieres ordenar?= ");
scanf("%d",&n);
}while((n<1)&& (n>N));
entrada(a,n);
printf("\nLos %d numeros que me diste son:",n);
imprimirLista(a,n);
quicksort(a,0,n-1);
printf("\n\nAqui tienes tus %d numeros ordenados",n);imprimirLista(a,n);
getch();
return 0;}
void quicksort(int a[],int primero, int ultimo)
{
int i,j,central;
int pivote;
central=((primero+ultimo))/2;
pivote=a[central];i=primero;
j=ultimo;
do{
while(a[i]<pivote) i++;
while(a[j]>pivote) j--;
if(i<=j)
{
int temp;
temp=a[i];
a[i]=a[j];
a[j]=temp;
i++;
j--;
}}while(i<=j);if(primero<j)
quicksort(a,primero,j);
if(i<ultimo)
quicksort(a,i,ultimo);
}
void imprimirLista (int a[], int n)
{
int i;
for(i=0;i<n;i++)
{
char c;
c=(i%10==0)?'\n':' ';;...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS