Código Python – Ordenamiento Quicksort


El siguiente post pertenece al topic: Métodos de Ordenamiento codificados en Python.

El código realiza un Ordenamiento de datos numéricos haciendo uso del Método Quicksort:

def quicksort(lista,izq,der):
    i=izq
    j=der
    x=lista[(izq + der)/2]

    while( i <= j ):
        while lista[i]<x and j<=der:
            i=i+1
        while x<lista[j] and j>izq:
            j=j-1
        if i<=j:
            aux = lista[i]; lista[i] = lista[j]; lista[j] = aux;
            i=i+1;  j=j-1;

        if izq < j:
		quicksort( lista, izq, j );
	if i < der:
		quicksort( lista, i, der );

def imprimeLista(lista,tam):
    for i in range(0,tam):
        print lista[i]

def leeLista():
    lista=[]
    cn=int(raw_input("Cantidad de numeros a ingresar: "))

    for i in range(0,cn):
        lista.append(int(raw_input("Ingrese numero %d : " % i)))
    return lista

A=leeLista()
quicksort(A,0,len(A)-1)
imprimeLista(A,len(A))
Anuncios

Código PHP – Ordenamiento Quicksort


El siguiente post pertenece al topic: Métodos de Ordenamiento codificados en PHP.

El código realiza un Ordenamiento de datos numéricos haciendo uso del Método Quicksort:

<?php
    function quicksort($A, $izq, $der )
    {
        $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 );

        return $A;
    }

    function main()
    {

        $VectorA=array(5,4,3,2,1);

        $VectorB=quicksort($VectorA,0,sizeof($VectorA)-1);

        for($i=0;$i<sizeof($VectorB);$i++)
            echo $VectorB[$i]."\n";

    }

    main();
?>

Código Bash – Ordenamiento Quicksort


El siguiente código trata del método de ordenamiento quicksort en bash:

#!/bin/bash
function quicksort {
	lista=$1
        izq=$2
        der=$3

        i=$izq;
        j=$der;
        x=${lista[$[$[$izq + $der]/2]]}

        while [ $i -le $j ] ; do
		while [[ ${lista[$i]} -lt $x && $j -le $der ]] ; do
			i=$[$i+1]
		done

		while [[ $x -lt ${lista[$j]} && $j -gt $izq ]] ; do
			j=$[$j-1]
		done

		if [ $i -le $j ] ; then
			aus=${lista[$i]}; lista[$i]=${lista[$j]}; lista[$j]=$aus;
			i=$[$i+1];  j=$[$j-1]
		fi
	done

	if [ $izq -lt $j ] ; then
		quicksort $lista $izq $j
        fi
	if [ $i -lt $der ] ; then
		quicksort $lista $i $der
        fi
}

lista=(5 4 3 2 1)

quicksort $lista 0 $[${#lista[@]}-1]

for i in ${lista[@]};do	echo $i; done

Código C++ – Ordenamiento Quick Sort


//Quick Sort
//Codificado por sAfOrAs
#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 ); 
}

void 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);
  
}
#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;
	}
}