<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.ecured.cu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Manuel+jc.manzanillo1&amp;*</id>
	<title>EcuRed - Contribuciones del colaborador [es]</title>
	<link rel="self" type="application/atom+xml" href="https://www.ecured.cu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Manuel+jc.manzanillo1&amp;*"/>
	<link rel="alternate" type="text/html" href="https://www.ecured.cu/Especial:Contribuciones/Manuel_jc.manzanillo1"/>
	<updated>2026-05-28T01:40:51Z</updated>
	<subtitle>Contribuciones del colaborador</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Discusi%C3%B3n:Sales_Biliares&amp;diff=1208040</id>
		<title>Discusión:Sales Biliares</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Discusi%C3%B3n:Sales_Biliares&amp;diff=1208040"/>
		<updated>2011-11-26T18:20:43Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: Página creada con 'Le añadí una foto al artículo'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le añadí una foto al artículo&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:Sales_Biliares.jpg&amp;diff=1208033</id>
		<title>Archivo:Sales Biliares.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:Sales_Biliares.jpg&amp;diff=1208033"/>
		<updated>2011-11-26T18:18:01Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sumario ==&lt;br /&gt;
&lt;br /&gt;
== Estado de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Discusi%C3%B3n:Sales_Biliares&amp;diff=1208045</id>
		<title>Discusión:Sales Biliares</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Discusi%C3%B3n:Sales_Biliares&amp;diff=1208045"/>
		<updated>2011-11-26T17:06:50Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: Página blanqueada&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Sales_Biliares&amp;diff=1208036</id>
		<title>Sales Biliares</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Sales_Biliares&amp;diff=1208036"/>
		<updated>2011-11-26T17:03:22Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Medicamento&lt;br /&gt;
|nombre= Sales Biliares &lt;br /&gt;
|logo= Sales_Biliares.jpg&lt;br /&gt;
|tamaño= Tabletas de 65 mg &lt;br /&gt;
|descripción=Tabletas de color Marron  &lt;br /&gt;
|Via_de_administracion= VO&lt;br /&gt;
|Grupo_terapeutico=Afecciones Gastroinstestinales&lt;br /&gt;
}}&lt;br /&gt;
'''Sales biliares.''' Son las sales de los ácidos biliares, pueden ser sales sódicas o potásicas. Los ácidos modificados taurocólico y glicocólico, también tienen sales.&lt;br /&gt;
== Composición==&lt;br /&gt;
Cada tableta revestida contiene 65 mg de sales biliares de magnesio;27,285 mg de lactosa monohidratada, excipiente c.s.&lt;br /&gt;
== Mecanismo de acción y acciones farmacológicas ==&lt;br /&gt;
Mecanismo de acción: es estimulante de la secreción biliar, aumenta y promueve la expulsión de la bilis. Favorece la digestión de las grasas, las que pasan a la sangre en forma saponificada. El hígado reabsorbe y reexcreta las sales biliares para formar un ciclo necesario en la absorción de las grasas. La principal función de las sales biliares es actuar como coleréticas, también posee acción colagoga. En los estados de deficiencias biliares actúan como terapia sustitutiva, al suplir las sales biliares deficientes y al mismo tiempo estimulan la producción del flujo biliar. Se le atribuyen a las sales biliares acción colepoyética, estimulando las células hepáticas para producir bilis; sin embargo, este punto está en discusión, ya que la cantidad eliminada de sales biliares no es mayor que la administrada. Otra función de la bilis consiste en neutralizar el quimioácido que proviene del estómago, aunque en este sentido su acción es inferior a la del jugo pancreático. &lt;br /&gt;
Un derivado del ácido cólico -el ácido dehidrocólico- ha mostrado ser hasta ahora el más potente colerético en cuanto a volumen de bilis secretada, aunque esta aumente en líquido y no en proporción de sólidos. El ácido dehidrocólico, por tanto, es solo un hidrocolerético, pero es menos tóxico que las sales biliares.&lt;br /&gt;
== Farmacocinética ==&lt;br /&gt;
Acción local.                &lt;br /&gt;
== Indicaciones ==&lt;br /&gt;
En todos los casos de insuficiencia biliar acompañada o no de colecistitis, colangitis, colelitiasis no obstructiva.&lt;br /&gt;
&lt;br /&gt;
== Contraindicaciones ==&lt;br /&gt;
Pacientes con galactosemia congénita, síndrome de malaabsorción de la glucosa y de la galactosa o déficit de lactasa.&lt;br /&gt;
== Precauciones ==&lt;br /&gt;
Pacientes con intolerancia a la lactosa. &lt;br /&gt;
== Reacciones adversas ==&lt;br /&gt;
No se reportan. &lt;br /&gt;
== Posología ==&lt;br /&gt;
1-3 tabletas revestidas diarias, antes de cada comida y al acostarse. &lt;br /&gt;
== Regulación  a la prescripción ==&lt;br /&gt;
Por receta médica.                &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
*Formulario Nacional de Medicamentos.&lt;br /&gt;
&lt;br /&gt;
[[Category:Medicamentos_sintéticos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Microvita&amp;diff=1207778</id>
		<title>Microvita</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Microvita&amp;diff=1207778"/>
		<updated>2011-11-26T16:35:31Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Sistema:Moderación_Salud}}&lt;br /&gt;
{{Medicamento|nombre= Microvita |logo= Micro_Vita.jpg|descripcion=Se recomienda en el manejo del acné, fotodaño, hiperqueratosis y celulitis.|presentacion_farmaceutica=Crema |Via_de_administracion=Aplicación en la piel|Grupo_terapeutico=Dermatológicos}} &lt;br /&gt;
''' Microvita '''. Pertenece a la familia de [[medicamentos]] llamados dermatológicos. Se usa para el manejo del [[acné]], donde proporciona muy buenos resultados. Además es efectivo cuando se presenta fotodaño, hiperqueratosis y celulitis.&lt;br /&gt;
 &lt;br /&gt;
== Ingrediente activo y propiedades: ==&lt;br /&gt;
&lt;br /&gt;
La Micro­vita contiene retinol, un retinoide precursor del ácido retinoico. El retinol aplicado en la piel, penetra y se transforma parcialmente en ácido retinoico. Ambos compuestos ejercen sus efectos mediante interacción con sus receptores dérmicos respectivos. Tal interacción modula muchas de las funciones del tejido cutáneo, como son: &lt;br /&gt;
&lt;br /&gt;
* Favorecer el crecimiento y diferenciación de los quera­tinocitos y fibroblastos, células integrantes de la epidermis y dermis, respectivamente.&lt;br /&gt;
&lt;br /&gt;
* Reducir la adherencia celular de la epidermis, permitiendo su exfoliación. &lt;br /&gt;
* Retrasa la degradación de colágeno y promueve su síntesis. &lt;br /&gt;
&lt;br /&gt;
Micro­vita  está diseñado con el sistema MicroSkin, el primer sistema de liberación prolongada para uso cutáneo. El sistema MicroSkin se desarrolla a base de mi­croespon­jas, las cuales contienen el activo y se suspenden en crema como vehículo. Una vez aplicadas sobre la piel, las microesponjas liberan su contenido paulatinamente, con lo cual proporcionan concentraciones efectivas de mayor duración y sin excesos. El retinol liberado, por su carácter liposoluble, penetra ágilmente a la piel y, en parte, se transforma en ácido retinoico, lo que asegura menor biodegradación con concentraciones constantes, eficaces y de mayor duración, sin alcanzar los niveles que producen reacciones indeseables. Con Micro­vita se obtiene el efecto deseado con mucho menor riesgo de reacciones como prurito, eritema, ardor y descamación, las cuales frecuentemente son motivo de descontinuación y abandono del uso facial o cutáneo. &lt;br /&gt;
Adicionalmente, Micro­vita se formula con antioxi­dantes y, se presenta en cápsulas herméticas que aseguran su estabilidad durante más de 2 años.&lt;br /&gt;
 &lt;br /&gt;
== Efectos y usos recomendados: ==&lt;br /&gt;
 &lt;br /&gt;
La microvita se recomienda usarla especialmente para tratar afecciones como: el acné, fotodaño, hiperqueratosis y celulitis, por sus comprobados resultados satisfactorios.&lt;br /&gt;
* En el acné vulgar o juvenil, favorece la descamación y des­taponamiento de los folículos pilosebáceos que generan los comedones propios del acné. Reduce la producción de sebo, o previene la formación de abscesos e interfiere con el desarrollo bacteriano (Propionibacterium acnes), promotor del trastorno. &lt;br /&gt;
* En piel fotodañada, favorece la exfoliación, restaura la arquitectura cutánea, disminuye las arrugas, ­incrementa la tensión cutánea y desvanece las manchas asociadas. &lt;br /&gt;
* En hiperqueratosis, por su efecto exfoliativo, adelgaza la piel engrosada. Por su fórmula humectante y lubricante, suaviza la piel. Elimina callosidades, cutículas y la aspereza de manos, codos, rodillas, talones y pies. &lt;br /&gt;
* En celulitis leve a moderada, detiene y revierte el espesor del panículo y disminuye la fijación y tracción del tejido superficial. Beneficio que en parte se debe a que previene la transformación de fibroblastos en adipocitos.&lt;br /&gt;
&lt;br /&gt;
== Precauciones y limitaciones de uso: ==&lt;br /&gt;
&lt;br /&gt;
Con Microvita, por su sistema MicroSkin, se reduce sig­nificativamente el riesgo de reacciones indeseables, permitiendo la continuidad de su aplicación por periodos prolongados. Al igual que cualquier retinoide, se recomienda evitar la exposición a rayos solares, la aplicación matutina de un filtro con factor de protección solar (SPF) 15 ó mayor. &lt;br /&gt;
Las primeras dos semanas, es recomendable no aplicarlo sobre párpados, para evitar algún grado de irritación en esta piel tan delgada, o bien, hágalo avanzando sobre la piel poco a poco o alternando los días de aplicación. Úselo únicamente por las noches. Evite combinar con otros productos, principalmente aquellos que contengan exfoliantes fuertes (ácido retinoico, glicólico y otros alfahidroxiácidos –AHA–). &lt;br /&gt;
Consérvelo en lugar fresco (entre 8 y 15ºC). No se deje al alcance de los niños. &lt;br /&gt;
 &lt;br /&gt;
== Presentaciones y modo de uso: ==&lt;br /&gt;
&lt;br /&gt;
'''Microvita Crema''', se presenta en cápsulas de 0.3 mL, en sus tres diferentes concentraciones, fácilmente identificables por su color: &lt;br /&gt;
* MICROVITA 0.075%, cápsulas azul rey. &lt;br /&gt;
* MICROVITA 0.15%, cápsulas plata. &lt;br /&gt;
* MICROVITA 0.30%, cápsulas oro. &lt;br /&gt;
&lt;br /&gt;
En sus tres concentraciones, se presenta en caja y tarro con 30 cápsulas. &lt;br /&gt;
Su exclusivo diseño en cápsulas monodosis, evita contaminaciones de la fórmula y proporciona la cantidad suficiente para cubrir cara y cuello, o áreas equivalentes, sin excesos ni desperdicios. &lt;br /&gt;
Para extraer el contenido de la cápsula, gire el cuello de la misma hasta que se rompa y desprenda. O si lo prefiere, corte con una tijera. Invierta la cápsula y presione para depositar su contenido en las yemas de los dedos o en la palma de la mano, y aplíquela suavemente sin frotar. Deje que se absorba y desaparezca. Debe aplicarse diario. &lt;br /&gt;
 &lt;br /&gt;
== Véase También ==&lt;br /&gt;
* [[Metoclopramida]]&lt;br /&gt;
* [[Diazepam]]&lt;br /&gt;
* [[Aciclovir]]&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
&lt;br /&gt;
* Diccionario de Especialidades Farmacéuticas. Edición 49. México, 2003&lt;br /&gt;
* http://www.libreriamedica8a.com&lt;br /&gt;
&lt;br /&gt;
[[Category: Medicamentos_sintéticos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Microvita&amp;diff=1207768</id>
		<title>Microvita</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Microvita&amp;diff=1207768"/>
		<updated>2011-11-26T16:33:27Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Sistema:Moderación_Salud}}&lt;br /&gt;
{{Medicamento|nombre= Microvita |logo= Micro_Vita.jpg|descripcion=Se recomienda en el manejo del acné, fotodaño, hiperqueratosis y celulitis.|presentacion_farmaceutica=Crema |Via_de_administracion=Aplicación en la piel|Grupo_terapeutico=Dermatológicos}} &lt;br /&gt;
''' Microvita '''. Pertenece a la familia de [[medicamentos]] llamados dermatológicos. Se usa para el manejo del [[acné]], donde proporciona muy buenos resultados. Además es efectivo cuando se presenta fotodaño, hiperqueratosis y celulitis.&lt;br /&gt;
 &lt;br /&gt;
== Ingrediente activo y propiedades: ==&lt;br /&gt;
&lt;br /&gt;
La Micro­vita contiene retinol, un retinoide precursor del ácido retinoico. El retinol aplicado en la piel, penetra y se transforma parcialmente en ácido retinoico. Ambos compuestos ejercen sus efectos mediante interacción con sus receptores dérmicos respectivos. Tal interacción modula muchas de las funciones del tejido cutáneo, como son: &lt;br /&gt;
&lt;br /&gt;
* Favorecer el crecimiento y diferenciación de los quera­tinocitos y fibroblastos, células integrantes de la epidermis y dermis, respectivamente.&lt;br /&gt;
&lt;br /&gt;
* Reducir la adherencia celular de la epidermis, permitiendo su exfoliación. &lt;br /&gt;
* Retrasa la degradación de colágeno y promueve su síntesis. &lt;br /&gt;
&lt;br /&gt;
Micro­vita  está diseñado con el sistema MicroSkin, el primer sistema de liberación prolongada para uso cutáneo. El sistema MicroSkin se desarrolla a base de mi­croespon­jas, las cuales contienen el activo y se suspenden en crema como vehículo. Una vez aplicadas sobre la piel, las microesponjas liberan su contenido paulatinamente, con lo cual proporcionan concentraciones efectivas de mayor duración y sin excesos. El retinol liberado, por su carácter liposoluble, penetra ágilmente a la piel y, en parte, se transforma en ácido retinoico, lo que asegura menor biodegradación con concentraciones constantes, eficaces y de mayor duración, sin alcanzar los niveles que producen reacciones indeseables. Con Micro­vita se obtiene el efecto deseado con mucho menor riesgo de reacciones como prurito, eritema, ardor y descamación, las cuales frecuentemente son motivo de descontinuación y abandono del uso facial o cutáneo. &lt;br /&gt;
Adicionalmente, Micro­vita se formula con antioxi­dantes y, se presenta en cápsulas herméticas que aseguran su estabilidad durante más de 2 años.&lt;br /&gt;
 &lt;br /&gt;
=== Efectos y usos recomendados:===&lt;br /&gt;
 &lt;br /&gt;
La microvita se recomienda usarla especialmente para tratar afecciones como: el acné, fotodaño, hiperqueratosis y celulitis, por sus comprobados resultados satisfactorios.&lt;br /&gt;
* En el acné vulgar o juvenil, favorece la descamación y des­taponamiento de los folículos pilosebáceos que generan los comedones propios del acné. Reduce la producción de sebo, o previene la formación de abscesos e interfiere con el desarrollo bacteriano (Propionibacterium acnes), promotor del trastorno. &lt;br /&gt;
* En piel fotodañada, favorece la exfoliación, restaura la arquitectura cutánea, disminuye las arrugas, ­incrementa la tensión cutánea y desvanece las manchas asociadas. &lt;br /&gt;
* En hiperqueratosis, por su efecto exfoliativo, adelgaza la piel engrosada. Por su fórmula humectante y lubricante, suaviza la piel. Elimina callosidades, cutículas y la aspereza de manos, codos, rodillas, talones y pies. &lt;br /&gt;
* En celulitis leve a moderada, detiene y revierte el espesor del panículo y disminuye la fijación y tracción del tejido superficial. Beneficio que en parte se debe a que previene la transformación de fibroblastos en adipocitos.&lt;br /&gt;
&lt;br /&gt;
=== Precauciones y limitaciones de uso:===&lt;br /&gt;
&lt;br /&gt;
Con Microvita, por su sistema MicroSkin, se reduce sig­nificativamente el riesgo de reacciones indeseables, permitiendo la continuidad de su aplicación por periodos prolongados. Al igual que cualquier retinoide, se recomienda evitar la exposición a rayos solares, la aplicación matutina de un filtro con factor de protección solar (SPF) 15 ó mayor. &lt;br /&gt;
Las primeras dos semanas, es recomendable no aplicarlo sobre párpados, para evitar algún grado de irritación en esta piel tan delgada, o bien, hágalo avanzando sobre la piel poco a poco o alternando los días de aplicación. Úselo únicamente por las noches. Evite combinar con otros productos, principalmente aquellos que contengan exfoliantes fuertes (ácido retinoico, glicólico y otros alfahidroxiácidos –AHA–). &lt;br /&gt;
Consérvelo en lugar fresco (entre 8 y 15ºC). No se deje al alcance de los niños. &lt;br /&gt;
 &lt;br /&gt;
== Presentaciones y modo de uso: ==&lt;br /&gt;
&lt;br /&gt;
'''Microvita Crema''', se presenta en cápsulas de 0.3 mL, en sus tres diferentes concentraciones, fácilmente identificables por su color: &lt;br /&gt;
* MICROVITA 0.075%, cápsulas azul rey. &lt;br /&gt;
* MICROVITA 0.15%, cápsulas plata. &lt;br /&gt;
* MICROVITA 0.30%, cápsulas oro. &lt;br /&gt;
&lt;br /&gt;
En sus tres concentraciones, se presenta en caja y tarro con 30 cápsulas. &lt;br /&gt;
Su exclusivo diseño en cápsulas monodosis, evita contaminaciones de la fórmula y proporciona la cantidad suficiente para cubrir cara y cuello, o áreas equivalentes, sin excesos ni desperdicios. &lt;br /&gt;
Para extraer el contenido de la cápsula, gire el cuello de la misma hasta que se rompa y desprenda. O si lo prefiere, corte con una tijera. Invierta la cápsula y presione para depositar su contenido en las yemas de los dedos o en la palma de la mano, y aplíquela suavemente sin frotar. Deje que se absorba y desaparezca. Debe aplicarse diario. &lt;br /&gt;
 &lt;br /&gt;
=== Véase También ===&lt;br /&gt;
* [[Metoclopramida]]&lt;br /&gt;
* [[Diazepam]]&lt;br /&gt;
* [[Aciclovir]]&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
&lt;br /&gt;
* Diccionario de Especialidades Farmacéuticas. Edición 49. México, 2003&lt;br /&gt;
* http://www.libreriamedica8a.com&lt;br /&gt;
&lt;br /&gt;
[[Category: Medicamentos_sintéticos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Microvita&amp;diff=1207764</id>
		<title>Microvita</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Microvita&amp;diff=1207764"/>
		<updated>2011-11-26T16:32:29Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: /* Efectos y usos recomendados: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Sistema:Moderación_Salud}}&lt;br /&gt;
{{Medicamento|nombre= Microvita |logo= Micro_Vita.jpg|descripcion=Se recomienda en el manejo del acné, fotodaño, hiperqueratosis y celulitis.|presentacion_farmaceutica=Crema |Via_de_administracion=Aplicación en la piel|Grupo_terapeutico=Dermatológicos}} &lt;br /&gt;
 &lt;br /&gt;
''' Microvita '''. Pertenece a la familia de [[medicamentos]] llamados dermatológicos. Se usa para el manejo del [[acné]], donde proporciona muy buenos resultados. Además es efectivo cuando se presenta fotodaño, hiperqueratosis y celulitis.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ingrediente activo y propiedades: ==&lt;br /&gt;
&lt;br /&gt;
La Micro­vita contiene retinol, un retinoide precursor del ácido retinoico. El retinol aplicado en la piel, penetra y se transforma parcialmente en ácido retinoico. Ambos compuestos ejercen sus efectos mediante interacción con sus receptores dérmicos respectivos. Tal interacción modula muchas de las funciones del tejido cutáneo, como son: &lt;br /&gt;
&lt;br /&gt;
* Favorecer el crecimiento y diferenciación de los quera­tinocitos y fibroblastos, células integrantes de la epidermis y dermis, respectivamente.&lt;br /&gt;
&lt;br /&gt;
* Reducir la adherencia celular de la epidermis, permitiendo su exfoliación. &lt;br /&gt;
* Retrasa la degradación de colágeno y promueve su síntesis. &lt;br /&gt;
&lt;br /&gt;
Micro­vita  está diseñado con el sistema MicroSkin, el primer sistema de liberación prolongada para uso cutáneo. El sistema MicroSkin se desarrolla a base de mi­croespon­jas, las cuales contienen el activo y se suspenden en crema como vehículo. Una vez aplicadas sobre la piel, las microesponjas liberan su contenido paulatinamente, con lo cual proporcionan concentraciones efectivas de mayor duración y sin excesos. El retinol liberado, por su carácter liposoluble, penetra ágilmente a la piel y, en parte, se transforma en ácido retinoico, lo que asegura menor biodegradación con concentraciones constantes, eficaces y de mayor duración, sin alcanzar los niveles que producen reacciones indeseables. Con Micro­vita se obtiene el efecto deseado con mucho menor riesgo de reacciones como prurito, eritema, ardor y descamación, las cuales frecuentemente son motivo de descontinuación y abandono del uso facial o cutáneo. &lt;br /&gt;
Adicionalmente, Micro­vita se formula con antioxi­dantes y, se presenta en cápsulas herméticas que aseguran su estabilidad durante más de 2 años.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Efectos y usos recomendados:===&lt;br /&gt;
 &lt;br /&gt;
La microvita se recomienda usarla especialmente para tratar afecciones como: el acné, fotodaño, hiperqueratosis y celulitis, por sus comprobados resultados satisfactorios.&lt;br /&gt;
* En el acné vulgar o juvenil, favorece la descamación y des­taponamiento de los folículos pilosebáceos que generan los comedones propios del acné. Reduce la producción de sebo, o previene la formación de abscesos e interfiere con el desarrollo bacteriano (Propionibacterium acnes), promotor del trastorno. &lt;br /&gt;
* En piel fotodañada, favorece la exfoliación, restaura la arquitectura cutánea, disminuye las arrugas, ­incrementa la tensión cutánea y desvanece las manchas asociadas. &lt;br /&gt;
* En hiperqueratosis, por su efecto exfoliativo, adelgaza la piel engrosada. Por su fórmula humectante y lubricante, suaviza la piel. Elimina callosidades, cutículas y la aspereza de manos, codos, rodillas, talones y pies. &lt;br /&gt;
* En celulitis leve a moderada, detiene y revierte el espesor del panículo y disminuye la fijación y tracción del tejido superficial. Beneficio que en parte se debe a que previene la transformación de fibroblastos en adipocitos.&lt;br /&gt;
&lt;br /&gt;
=== Precauciones y limitaciones de uso:===&lt;br /&gt;
&lt;br /&gt;
Con Microvita, por su sistema MicroSkin, se reduce sig­nificativamente el riesgo de reacciones indeseables, permitiendo la continuidad de su aplicación por periodos prolongados. Al igual que cualquier retinoide, se recomienda evitar la exposición a rayos solares, la aplicación matutina de un filtro con factor de protección solar (SPF) 15 ó mayor. &lt;br /&gt;
Las primeras dos semanas, es recomendable no aplicarlo sobre párpados, para evitar algún grado de irritación en esta piel tan delgada, o bien, hágalo avanzando sobre la piel poco a poco o alternando los días de aplicación. Úselo únicamente por las noches. Evite combinar con otros productos, principalmente aquellos que contengan exfoliantes fuertes (ácido retinoico, glicólico y otros alfahidroxiácidos –AHA–). &lt;br /&gt;
Consérvelo en lugar fresco (entre 8 y 15ºC). No se deje al alcance de los niños. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Presentaciones y modo de uso: ==&lt;br /&gt;
&lt;br /&gt;
'''Microvita Crema''', se presenta en cápsulas de 0.3 mL, en sus tres diferentes concentraciones, fácilmente identificables por su color: &lt;br /&gt;
* MICROVITA 0.075%, cápsulas azul rey. &lt;br /&gt;
* MICROVITA 0.15%, cápsulas plata. &lt;br /&gt;
* MICROVITA 0.30%, cápsulas oro. &lt;br /&gt;
&lt;br /&gt;
En sus tres concentraciones, se presenta en caja y tarro con 30 cápsulas. &lt;br /&gt;
Su exclusivo diseño en cápsulas monodosis, evita contaminaciones de la fórmula y proporciona la cantidad suficiente para cubrir cara y cuello, o áreas equivalentes, sin excesos ni desperdicios. &lt;br /&gt;
Para extraer el contenido de la cápsula, gire el cuello de la misma hasta que se rompa y desprenda. O si lo prefiere, corte con una tijera. Invierta la cápsula y presione para depositar su contenido en las yemas de los dedos o en la palma de la mano, y aplíquela suavemente sin frotar. Deje que se absorba y desaparezca. Debe aplicarse diario. &lt;br /&gt;
 &lt;br /&gt;
=== Véase También ===&lt;br /&gt;
* [[Metoclopramida]]&lt;br /&gt;
* [[Diazepam]]&lt;br /&gt;
* [[Aciclovir]]&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
&lt;br /&gt;
* Diccionario de Especialidades Farmacéuticas. Edición 49. México, 2003&lt;br /&gt;
* http://www.libreriamedica8a.com&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[[Category: Medicamentos_sintéticos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Microvita&amp;diff=1207759</id>
		<title>Microvita</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Microvita&amp;diff=1207759"/>
		<updated>2011-11-26T16:31:33Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Sistema:Moderación_Salud}}&lt;br /&gt;
{{Medicamento|nombre= Microvita |logo= Micro_Vita.jpg|descripcion=Se recomienda en el manejo del acné, fotodaño, hiperqueratosis y celulitis.|presentacion_farmaceutica=Crema |Via_de_administracion=Aplicación en la piel|Grupo_terapeutico=Dermatológicos}} &lt;br /&gt;
 &lt;br /&gt;
''' Microvita '''. Pertenece a la familia de [[medicamentos]] llamados dermatológicos. Se usa para el manejo del [[acné]], donde proporciona muy buenos resultados. Además es efectivo cuando se presenta fotodaño, hiperqueratosis y celulitis.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ingrediente activo y propiedades: ==&lt;br /&gt;
&lt;br /&gt;
La Micro­vita contiene retinol, un retinoide precursor del ácido retinoico. El retinol aplicado en la piel, penetra y se transforma parcialmente en ácido retinoico. Ambos compuestos ejercen sus efectos mediante interacción con sus receptores dérmicos respectivos. Tal interacción modula muchas de las funciones del tejido cutáneo, como son: &lt;br /&gt;
&lt;br /&gt;
* Favorecer el crecimiento y diferenciación de los quera­tinocitos y fibroblastos, células integrantes de la epidermis y dermis, respectivamente.&lt;br /&gt;
&lt;br /&gt;
* Reducir la adherencia celular de la epidermis, permitiendo su exfoliación. &lt;br /&gt;
* Retrasa la degradación de colágeno y promueve su síntesis. &lt;br /&gt;
&lt;br /&gt;
Micro­vita  está diseñado con el sistema MicroSkin, el primer sistema de liberación prolongada para uso cutáneo. El sistema MicroSkin se desarrolla a base de mi­croespon­jas, las cuales contienen el activo y se suspenden en crema como vehículo. Una vez aplicadas sobre la piel, las microesponjas liberan su contenido paulatinamente, con lo cual proporcionan concentraciones efectivas de mayor duración y sin excesos. El retinol liberado, por su carácter liposoluble, penetra ágilmente a la piel y, en parte, se transforma en ácido retinoico, lo que asegura menor biodegradación con concentraciones constantes, eficaces y de mayor duración, sin alcanzar los niveles que producen reacciones indeseables. Con Micro­vita se obtiene el efecto deseado con mucho menor riesgo de reacciones como prurito, eritema, ardor y descamación, las cuales frecuentemente son motivo de descontinuación y abandono del uso facial o cutáneo. &lt;br /&gt;
Adicionalmente, Micro­vita se formula con antioxi­dantes y, se presenta en cápsulas herméticas que aseguran su estabilidad durante más de 2 años.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Efectos y usos recomendados:===&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
La microvita se recomienda usarla especialmente para tratar afecciones como: el acné, fotodaño, hiperqueratosis y celulitis, por sus comprobados resultados satisfactorios.&lt;br /&gt;
* En el acné vulgar o juvenil, favorece la descamación y des­taponamiento de los folículos pilosebáceos que generan los comedones propios del acné. Reduce la producción de sebo, o previene la formación de abscesos e interfiere con el desarrollo bacteriano (Propionibacterium acnes), promotor del trastorno. &lt;br /&gt;
* En piel fotodañada, favorece la exfoliación, restaura la arquitectura cutánea, disminuye las arrugas, ­incrementa la tensión cutánea y desvanece las manchas asociadas. &lt;br /&gt;
* En hiperqueratosis, por su efecto exfoliativo, adelgaza la piel engrosada. Por su fórmula humectante y lubricante, suaviza la piel. Elimina callosidades, cutículas y la aspereza de manos, codos, rodillas, talones y pies. &lt;br /&gt;
* En celulitis leve a moderada, detiene y revierte el espesor del panículo y disminuye la fijación y tracción del tejido superficial. Beneficio que en parte se debe a que previene la transformación de fibroblastos en adipocitos. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Precauciones y limitaciones de uso:===&lt;br /&gt;
&lt;br /&gt;
Con Microvita, por su sistema MicroSkin, se reduce sig­nificativamente el riesgo de reacciones indeseables, permitiendo la continuidad de su aplicación por periodos prolongados. Al igual que cualquier retinoide, se recomienda evitar la exposición a rayos solares, la aplicación matutina de un filtro con factor de protección solar (SPF) 15 ó mayor. &lt;br /&gt;
Las primeras dos semanas, es recomendable no aplicarlo sobre párpados, para evitar algún grado de irritación en esta piel tan delgada, o bien, hágalo avanzando sobre la piel poco a poco o alternando los días de aplicación. Úselo únicamente por las noches. Evite combinar con otros productos, principalmente aquellos que contengan exfoliantes fuertes (ácido retinoico, glicólico y otros alfahidroxiácidos –AHA–). &lt;br /&gt;
Consérvelo en lugar fresco (entre 8 y 15ºC). No se deje al alcance de los niños. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Presentaciones y modo de uso: ==&lt;br /&gt;
&lt;br /&gt;
'''Microvita Crema''', se presenta en cápsulas de 0.3 mL, en sus tres diferentes concentraciones, fácilmente identificables por su color: &lt;br /&gt;
* MICROVITA 0.075%, cápsulas azul rey. &lt;br /&gt;
* MICROVITA 0.15%, cápsulas plata. &lt;br /&gt;
* MICROVITA 0.30%, cápsulas oro. &lt;br /&gt;
&lt;br /&gt;
En sus tres concentraciones, se presenta en caja y tarro con 30 cápsulas. &lt;br /&gt;
Su exclusivo diseño en cápsulas monodosis, evita contaminaciones de la fórmula y proporciona la cantidad suficiente para cubrir cara y cuello, o áreas equivalentes, sin excesos ni desperdicios. &lt;br /&gt;
Para extraer el contenido de la cápsula, gire el cuello de la misma hasta que se rompa y desprenda. O si lo prefiere, corte con una tijera. Invierta la cápsula y presione para depositar su contenido en las yemas de los dedos o en la palma de la mano, y aplíquela suavemente sin frotar. Deje que se absorba y desaparezca. Debe aplicarse diario. &lt;br /&gt;
 &lt;br /&gt;
=== Véase También ===&lt;br /&gt;
* [[Metoclopramida]]&lt;br /&gt;
* [[Diazepam]]&lt;br /&gt;
* [[Aciclovir]]&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
&lt;br /&gt;
* Diccionario de Especialidades Farmacéuticas. Edición 49. México, 2003&lt;br /&gt;
* http://www.libreriamedica8a.com&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[[Category: Medicamentos_sintéticos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Microvita&amp;diff=1207753</id>
		<title>Microvita</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Microvita&amp;diff=1207753"/>
		<updated>2011-11-26T16:30:47Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: /* Fuentes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Sistema:Moderación_Salud}}&lt;br /&gt;
{{Medicamento|nombre= Microvita |logo= Micro_Vita.jpeg|descripcion=Se recomienda en el manejo del acné, fotodaño, hiperqueratosis y celulitis.|presentacion_farmaceutica=Crema |Via_de_administracion=Aplicación en la piel|Grupo_terapeutico=Dermatológicos}} &lt;br /&gt;
 &lt;br /&gt;
''' Microvita '''. Pertenece a la familia de [[medicamentos]] llamados dermatológicos. Se usa para el manejo del [[acné]], donde proporciona muy buenos resultados. Además es efectivo cuando se presenta fotodaño, hiperqueratosis y celulitis.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ingrediente activo y propiedades: ==&lt;br /&gt;
&lt;br /&gt;
La Micro­vita contiene retinol, un retinoide precursor del ácido retinoico. El retinol aplicado en la piel, penetra y se transforma parcialmente en ácido retinoico. Ambos compuestos ejercen sus efectos mediante interacción con sus receptores dérmicos respectivos. Tal interacción modula muchas de las funciones del tejido cutáneo, como son: &lt;br /&gt;
&lt;br /&gt;
* Favorecer el crecimiento y diferenciación de los quera­tinocitos y fibroblastos, células integrantes de la epidermis y dermis, respectivamente.&lt;br /&gt;
&lt;br /&gt;
* Reducir la adherencia celular de la epidermis, permitiendo su exfoliación. &lt;br /&gt;
* Retrasa la degradación de colágeno y promueve su síntesis. &lt;br /&gt;
&lt;br /&gt;
Micro­vita  está diseñado con el sistema MicroSkin, el primer sistema de liberación prolongada para uso cutáneo. El sistema MicroSkin se desarrolla a base de mi­croespon­jas, las cuales contienen el activo y se suspenden en crema como vehículo. Una vez aplicadas sobre la piel, las microesponjas liberan su contenido paulatinamente, con lo cual proporcionan concentraciones efectivas de mayor duración y sin excesos. El retinol liberado, por su carácter liposoluble, penetra ágilmente a la piel y, en parte, se transforma en ácido retinoico, lo que asegura menor biodegradación con concentraciones constantes, eficaces y de mayor duración, sin alcanzar los niveles que producen reacciones indeseables. Con Micro­vita se obtiene el efecto deseado con mucho menor riesgo de reacciones como prurito, eritema, ardor y descamación, las cuales frecuentemente son motivo de descontinuación y abandono del uso facial o cutáneo. &lt;br /&gt;
Adicionalmente, Micro­vita se formula con antioxi­dantes y, se presenta en cápsulas herméticas que aseguran su estabilidad durante más de 2 años.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Efectos y usos recomendados:===&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
La microvita se recomienda usarla especialmente para tratar afecciones como: el acné, fotodaño, hiperqueratosis y celulitis, por sus comprobados resultados satisfactorios.&lt;br /&gt;
* En el acné vulgar o juvenil, favorece la descamación y des­taponamiento de los folículos pilosebáceos que generan los comedones propios del acné. Reduce la producción de sebo, o previene la formación de abscesos e interfiere con el desarrollo bacteriano (Propionibacterium acnes), promotor del trastorno. &lt;br /&gt;
* En piel fotodañada, favorece la exfoliación, restaura la arquitectura cutánea, disminuye las arrugas, ­incrementa la tensión cutánea y desvanece las manchas asociadas. &lt;br /&gt;
* En hiperqueratosis, por su efecto exfoliativo, adelgaza la piel engrosada. Por su fórmula humectante y lubricante, suaviza la piel. Elimina callosidades, cutículas y la aspereza de manos, codos, rodillas, talones y pies. &lt;br /&gt;
* En celulitis leve a moderada, detiene y revierte el espesor del panículo y disminuye la fijación y tracción del tejido superficial. Beneficio que en parte se debe a que previene la transformación de fibroblastos en adipocitos. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Precauciones y limitaciones de uso:===&lt;br /&gt;
&lt;br /&gt;
Con Microvita, por su sistema MicroSkin, se reduce sig­nificativamente el riesgo de reacciones indeseables, permitiendo la continuidad de su aplicación por periodos prolongados. Al igual que cualquier retinoide, se recomienda evitar la exposición a rayos solares, la aplicación matutina de un filtro con factor de protección solar (SPF) 15 ó mayor. &lt;br /&gt;
Las primeras dos semanas, es recomendable no aplicarlo sobre párpados, para evitar algún grado de irritación en esta piel tan delgada, o bien, hágalo avanzando sobre la piel poco a poco o alternando los días de aplicación. Úselo únicamente por las noches. Evite combinar con otros productos, principalmente aquellos que contengan exfoliantes fuertes (ácido retinoico, glicólico y otros alfahidroxiácidos –AHA–). &lt;br /&gt;
Consérvelo en lugar fresco (entre 8 y 15ºC). No se deje al alcance de los niños. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Presentaciones y modo de uso: ==&lt;br /&gt;
&lt;br /&gt;
'''Microvita Crema''', se presenta en cápsulas de 0.3 mL, en sus tres diferentes concentraciones, fácilmente identificables por su color: &lt;br /&gt;
* MICROVITA 0.075%, cápsulas azul rey. &lt;br /&gt;
* MICROVITA 0.15%, cápsulas plata. &lt;br /&gt;
* MICROVITA 0.30%, cápsulas oro. &lt;br /&gt;
&lt;br /&gt;
En sus tres concentraciones, se presenta en caja y tarro con 30 cápsulas. &lt;br /&gt;
Su exclusivo diseño en cápsulas monodosis, evita contaminaciones de la fórmula y proporciona la cantidad suficiente para cubrir cara y cuello, o áreas equivalentes, sin excesos ni desperdicios. &lt;br /&gt;
Para extraer el contenido de la cápsula, gire el cuello de la misma hasta que se rompa y desprenda. O si lo prefiere, corte con una tijera. Invierta la cápsula y presione para depositar su contenido en las yemas de los dedos o en la palma de la mano, y aplíquela suavemente sin frotar. Deje que se absorba y desaparezca. Debe aplicarse diario. &lt;br /&gt;
 &lt;br /&gt;
=== Véase También ===&lt;br /&gt;
* [[Metoclopramida]]&lt;br /&gt;
* [[Diazepam]]&lt;br /&gt;
* [[Aciclovir]]&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
&lt;br /&gt;
* Diccionario de Especialidades Farmacéuticas. Edición 49. México, 2003&lt;br /&gt;
* http://www.libreriamedica8a.com&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[[Category: Medicamentos_sintéticos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Microvita&amp;diff=1207750</id>
		<title>Microvita</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Microvita&amp;diff=1207750"/>
		<updated>2011-11-26T16:29:28Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: Página creada con '{{Sistema:Moderación_Salud}} {{Medicamento|nombre= Microvita |logo= Micro_Vita.jpeg|descripcion=Se recomienda en el manejo del acné, fotodaño, hiperqueratosis y celulitis.|pr...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Sistema:Moderación_Salud}}&lt;br /&gt;
{{Medicamento|nombre= Microvita |logo= Micro_Vita.jpeg|descripcion=Se recomienda en el manejo del acné, fotodaño, hiperqueratosis y celulitis.|presentacion_farmaceutica=Crema |Via_de_administracion=Aplicación en la piel|Grupo_terapeutico=Dermatológicos}} &lt;br /&gt;
 &lt;br /&gt;
''' Microvita '''. Pertenece a la familia de [[medicamentos]] llamados dermatológicos. Se usa para el manejo del [[acné]], donde proporciona muy buenos resultados. Además es efectivo cuando se presenta fotodaño, hiperqueratosis y celulitis.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ingrediente activo y propiedades: ==&lt;br /&gt;
&lt;br /&gt;
La Micro­vita contiene retinol, un retinoide precursor del ácido retinoico. El retinol aplicado en la piel, penetra y se transforma parcialmente en ácido retinoico. Ambos compuestos ejercen sus efectos mediante interacción con sus receptores dérmicos respectivos. Tal interacción modula muchas de las funciones del tejido cutáneo, como son: &lt;br /&gt;
&lt;br /&gt;
* Favorecer el crecimiento y diferenciación de los quera­tinocitos y fibroblastos, células integrantes de la epidermis y dermis, respectivamente.&lt;br /&gt;
&lt;br /&gt;
* Reducir la adherencia celular de la epidermis, permitiendo su exfoliación. &lt;br /&gt;
* Retrasa la degradación de colágeno y promueve su síntesis. &lt;br /&gt;
&lt;br /&gt;
Micro­vita  está diseñado con el sistema MicroSkin, el primer sistema de liberación prolongada para uso cutáneo. El sistema MicroSkin se desarrolla a base de mi­croespon­jas, las cuales contienen el activo y se suspenden en crema como vehículo. Una vez aplicadas sobre la piel, las microesponjas liberan su contenido paulatinamente, con lo cual proporcionan concentraciones efectivas de mayor duración y sin excesos. El retinol liberado, por su carácter liposoluble, penetra ágilmente a la piel y, en parte, se transforma en ácido retinoico, lo que asegura menor biodegradación con concentraciones constantes, eficaces y de mayor duración, sin alcanzar los niveles que producen reacciones indeseables. Con Micro­vita se obtiene el efecto deseado con mucho menor riesgo de reacciones como prurito, eritema, ardor y descamación, las cuales frecuentemente son motivo de descontinuación y abandono del uso facial o cutáneo. &lt;br /&gt;
Adicionalmente, Micro­vita se formula con antioxi­dantes y, se presenta en cápsulas herméticas que aseguran su estabilidad durante más de 2 años.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Efectos y usos recomendados:===&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
La microvita se recomienda usarla especialmente para tratar afecciones como: el acné, fotodaño, hiperqueratosis y celulitis, por sus comprobados resultados satisfactorios.&lt;br /&gt;
* En el acné vulgar o juvenil, favorece la descamación y des­taponamiento de los folículos pilosebáceos que generan los comedones propios del acné. Reduce la producción de sebo, o previene la formación de abscesos e interfiere con el desarrollo bacteriano (Propionibacterium acnes), promotor del trastorno. &lt;br /&gt;
* En piel fotodañada, favorece la exfoliación, restaura la arquitectura cutánea, disminuye las arrugas, ­incrementa la tensión cutánea y desvanece las manchas asociadas. &lt;br /&gt;
* En hiperqueratosis, por su efecto exfoliativo, adelgaza la piel engrosada. Por su fórmula humectante y lubricante, suaviza la piel. Elimina callosidades, cutículas y la aspereza de manos, codos, rodillas, talones y pies. &lt;br /&gt;
* En celulitis leve a moderada, detiene y revierte el espesor del panículo y disminuye la fijación y tracción del tejido superficial. Beneficio que en parte se debe a que previene la transformación de fibroblastos en adipocitos. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== Precauciones y limitaciones de uso:===&lt;br /&gt;
&lt;br /&gt;
Con Microvita, por su sistema MicroSkin, se reduce sig­nificativamente el riesgo de reacciones indeseables, permitiendo la continuidad de su aplicación por periodos prolongados. Al igual que cualquier retinoide, se recomienda evitar la exposición a rayos solares, la aplicación matutina de un filtro con factor de protección solar (SPF) 15 ó mayor. &lt;br /&gt;
Las primeras dos semanas, es recomendable no aplicarlo sobre párpados, para evitar algún grado de irritación en esta piel tan delgada, o bien, hágalo avanzando sobre la piel poco a poco o alternando los días de aplicación. Úselo únicamente por las noches. Evite combinar con otros productos, principalmente aquellos que contengan exfoliantes fuertes (ácido retinoico, glicólico y otros alfahidroxiácidos –AHA–). &lt;br /&gt;
Consérvelo en lugar fresco (entre 8 y 15ºC). No se deje al alcance de los niños. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Presentaciones y modo de uso: ==&lt;br /&gt;
&lt;br /&gt;
'''Microvita Crema''', se presenta en cápsulas de 0.3 mL, en sus tres diferentes concentraciones, fácilmente identificables por su color: &lt;br /&gt;
* MICROVITA 0.075%, cápsulas azul rey. &lt;br /&gt;
* MICROVITA 0.15%, cápsulas plata. &lt;br /&gt;
* MICROVITA 0.30%, cápsulas oro. &lt;br /&gt;
&lt;br /&gt;
En sus tres concentraciones, se presenta en caja y tarro con 30 cápsulas. &lt;br /&gt;
Su exclusivo diseño en cápsulas monodosis, evita contaminaciones de la fórmula y proporciona la cantidad suficiente para cubrir cara y cuello, o áreas equivalentes, sin excesos ni desperdicios. &lt;br /&gt;
Para extraer el contenido de la cápsula, gire el cuello de la misma hasta que se rompa y desprenda. O si lo prefiere, corte con una tijera. Invierta la cápsula y presione para depositar su contenido en las yemas de los dedos o en la palma de la mano, y aplíquela suavemente sin frotar. Deje que se absorba y desaparezca. Debe aplicarse diario. &lt;br /&gt;
 &lt;br /&gt;
=== Véase También ===&lt;br /&gt;
* [[Metoclopramida]]&lt;br /&gt;
* [[Diazepam]]&lt;br /&gt;
* [[Aciclovir]]&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
&lt;br /&gt;
* Diccionario de Especialidades Farmacéuticas. Edición 49. México 2003&lt;br /&gt;
* http://www.libreriamedica8a.com/productos/2141.htm&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[[Category: Medicamentos_sintéticos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:Micro_Vita.jpg&amp;diff=1207740</id>
		<title>Archivo:Micro Vita.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:Micro_Vita.jpg&amp;diff=1207740"/>
		<updated>2011-11-26T16:26:00Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sumario ==&lt;br /&gt;
&lt;br /&gt;
== Estado de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979647</id>
		<title>Algoritmo de ordenamiento por selección</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979647"/>
		<updated>2011-09-30T17:49:42Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Selección|imagen=Selection-Sort-Animation.gif&lt;br /&gt;
|tamaño height 200&lt;br /&gt;
|concepto=Algoritmo que ubica elementos de una lista o vector, en una secuencia, dada por una relación de orden, tomando como punto de partida el menor elemento.}}&lt;br /&gt;
 &lt;br /&gt;
'''Algoritmo de ordenamiento por Selección (Selection Sort en [[inglés]]):''' Consiste en encontrar el menor de todos los elementos del arreglo o vector e intercambiarlo con el que está en la primera posición. Luego el segundo mas pequeño, y así sucesivamente hasta ordenarlo todo. Su implementación requiere O(n2) comparaciones e intercambios para ordenar una secuencia de elementos.&lt;br /&gt;
&lt;br /&gt;
== Descripción ==&lt;br /&gt;
&lt;br /&gt;
Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas, la operación de intercambiar  los elementos sería más costosa en este caso.&lt;br /&gt;
Su funcionamiento se puede definir de forma general como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Buscar el mínimo elemento entre una posición i y el final de la lista&lt;br /&gt;
* Intercambiar el mínimo con el elemento de la posición i&lt;br /&gt;
&lt;br /&gt;
Así, se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos indexados desde el 1:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''para''' i=1 '''hasta''' n-1;&lt;br /&gt;
    minimo = i;&lt;br /&gt;
    '''para''' j=i+1 '''hasta''' n&lt;br /&gt;
        '''si''' lista[j] &amp;lt; lista[minimo] '''entonces'''&lt;br /&gt;
            minimo = j &lt;br /&gt;
        '''fin si'''&lt;br /&gt;
    '''fin para'''&lt;br /&gt;
    intercambiar(lista[i], lista[minimo])&lt;br /&gt;
'''fin para'''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
&lt;br /&gt;
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'].&lt;br /&gt;
Se empieza por recorrer el arreglo hasta encontrar el menor elemento. En este caso el menor elemento es la primera 'a'. De manera que no ocurre ningún cambio. Luego se procede a buscar el siguiente elemento y se encuentra la segunda 'a'.&lt;br /&gt;
Esta se intercambia con el dato que está en la segunda posición, la 's', quedando el arreglo así después de dos recorridos: a = ['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e'].&lt;br /&gt;
El siguiente elemento, el tercero en orden de menor mayor es la primera 'e', la cual se intercambia con lo que está en la tercera posición, o sea, la 'o'. Le sigue la segunda 's', la cual es intercambiada con la 'r'.&lt;br /&gt;
El arreglo ahora se ve de la siguiente manera: a = ['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r'].&lt;br /&gt;
De esta manera se va buscando el elemento que debe ir en la siguiente posición hasta ordenar todo el arreglo.&lt;br /&gt;
 &lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
&lt;br /&gt;
El ciclo externo se ejecuta n veces para una lista de n elementos, o sea que para ordenar un vector de n términos, tiene que realizar siempre el mismo número de comparaciones. &lt;br /&gt;
'''c(n)= (n2-n)/2'''&lt;br /&gt;
Cada búsqueda requiere comparar todos los elementos no clasificados, de manera que el número de comparaciones c(n) no depende del orden de los términos, si no del número de términos; por lo que este algoritmo presenta un comportamiento constante independiente del orden de los datos. Luego la complejidad es del orden n2. &lt;br /&gt;
&lt;br /&gt;
== Estabilidad, Ventajas y Desventajas==&lt;br /&gt;
&lt;br /&gt;
Puede que exista algo de discrepancia  en cuanto a si es o no estable este algoritmo, pero en realidad esta implementación parece ser bastante estable. Se puede verificar esto ordenando un conjunto de datos que tenga un par de ellos con la misma clave. Se vera claramente que el orden relativo entre ellos es conservado. Algunos autores no lo consideran asi, pero independientemente de esto, este algoritmo tienes entre sus '''ventajas:'''&lt;br /&gt;
Es fácil su implementación.&lt;br /&gt;
No requiere memoria      adicional.&lt;br /&gt;
Realiza pocos intercambios.&lt;br /&gt;
Tiene un rendimiento      constante, pues existe poca diferencia entre el peor y el mejor caso.&lt;br /&gt;
Como todos también tiene algunas '''desventajas:'''&lt;br /&gt;
Es lento y poco eficiente      cuando se usa en listas grandes o medianas.&lt;br /&gt;
Realiza numerosas      comparaciones.&lt;br /&gt;
&lt;br /&gt;
== Implementación==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el Ordenamiento por Selección en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
&lt;br /&gt;
'''Java'''&lt;br /&gt;
void selecccion(int[] a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length - 1; i++)&lt;br /&gt;
        {&lt;br /&gt;
                int min = i;&lt;br /&gt;
                for (int j = i + 1; j &amp;lt; a.length; j++)&lt;br /&gt;
                {&lt;br /&gt;
                        if (a[j] &amp;lt; a[min])&lt;br /&gt;
                        {&lt;br /&gt;
                                min = j;&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
                if (i != min) &lt;br /&gt;
                {&lt;br /&gt;
                        int aux= a[i];&lt;br /&gt;
                        a[i] = a[min];&lt;br /&gt;
                        a[min] = aux;&lt;br /&gt;
                }&lt;br /&gt;
        }}&lt;br /&gt;
&lt;br /&gt;
C&lt;br /&gt;
&lt;br /&gt;
void ordsel(int * x, int n){&lt;br /&gt;
   int minimo=0,i,j;&lt;br /&gt;
   int swap;&lt;br /&gt;
   for(i=0 ; i&amp;lt;n-1 ; i++)&lt;br /&gt;
   {&lt;br /&gt;
      minimo=i;&lt;br /&gt;
      for(j=i+1 ; j&amp;lt;n ; j++)&lt;br /&gt;
         if (x[minimo] &amp;gt; x[j]) &lt;br /&gt;
            minimo=j;&lt;br /&gt;
      swap=x[minimo];&lt;br /&gt;
      x[minimo]=x[i];&lt;br /&gt;
      x[i]=swap;&lt;br /&gt;
   }}&lt;br /&gt;
Basic&lt;br /&gt;
For i = 1 To n - 1&lt;br /&gt;
   minimo = i&lt;br /&gt;
   For j = i + 1 To n&lt;br /&gt;
      If x(minimo) &amp;gt; x(j) Then&lt;br /&gt;
         minimo = j&lt;br /&gt;
      End If&lt;br /&gt;
   Next j&lt;br /&gt;
   temp = x(i)&lt;br /&gt;
   x(i) = x(minimo)&lt;br /&gt;
   x(minimo) = tempNext i&lt;br /&gt;
C++&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;#include &amp;lt;vector&amp;gt;using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 template &amp;lt;class T&amp;gt;void ordena_seleccion(vector&amp;lt;T&amp;gt;&amp;amp; v) {&lt;br /&gt;
    for (int i = 0; i &amp;lt; v.size() - 1; ++i) {&lt;br /&gt;
        int min = i;&lt;br /&gt;
        for (int c = i + 1; c &amp;lt; v.size(); ++c) {&lt;br /&gt;
            if (v[min] &amp;gt; v[c]) min = c;&lt;br /&gt;
        }&lt;br /&gt;
        T aux = v[i];&lt;br /&gt;
        v[i] = v[min];&lt;br /&gt;
        v[min] = aux;&lt;br /&gt;
    }}&lt;br /&gt;
Perl&lt;br /&gt;
sub seleccion {&lt;br /&gt;
    my $array = shift;    # Recibimos una referencia a un array&lt;br /&gt;
 &lt;br /&gt;
    my $i;    # Índice del elemento a comparar&lt;br /&gt;
    my $j;    # Índice del valor mínimo a encontrar&lt;br /&gt;
 &lt;br /&gt;
    # Para todos los elementos menos el último&lt;br /&gt;
    for ( $i = 0; $i &amp;lt; $#$array; $i++ ) {&lt;br /&gt;
 &lt;br /&gt;
        # Índice y valor del elemento a comparar&lt;br /&gt;
        my ( $m, $x ) = ( $i, $array-&amp;gt;[ $m ] );   &lt;br /&gt;
 &lt;br /&gt;
        # Buscamos el valor más pequeño de todos los demás&lt;br /&gt;
        for ( $j = $i + 1; $j &amp;lt; @$array; $j++ ) {&lt;br /&gt;
 &lt;br /&gt;
            ( $m, $x ) = ( $j, $array-&amp;gt;[ $j ] )   # Nuevo mínimo encontrado&lt;br /&gt;
                if $array-&amp;gt;[ $j ] &amp;lt; $x;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        # Hacemos el intercambio de elementos, si es necesario&lt;br /&gt;
        @$array[ $m, $i ] = @$array[ $i, $m ]  if $m != $i;&lt;br /&gt;
    }}&lt;br /&gt;
JavaScript&lt;br /&gt;
for(var i=0 ; i&amp;lt;vector.length-1 ; i++){&lt;br /&gt;
   var menor = i;&lt;br /&gt;
   for(var j=i+1 ; j&amp;lt;vector.length ; j++)&lt;br /&gt;
   {&lt;br /&gt;
      if (vector[menor] &amp;gt; vector[j]) menor = j;&lt;br /&gt;
   }&lt;br /&gt;
   var temp = vector[menor];&lt;br /&gt;
   vector[menor] = vector[i];&lt;br /&gt;
   vector[i] = temp;}&lt;br /&gt;
&lt;br /&gt;
PHP&lt;br /&gt;
function IntercambiarElementos(&amp;amp;$arreglo,$pos1,$pos2){&lt;br /&gt;
    $aux=$arreglo[$pos1];&lt;br /&gt;
    $arreglo[$pos1]=$arreglo[$pos2];&lt;br /&gt;
    $arreglo[$pos2]=$aux;}function PosicionMenorElemento($arreglo,$posinicial){&lt;br /&gt;
    $posmenor=$posinicial;&lt;br /&gt;
    for($i=$posinicial+1;$i&amp;lt;count($arreglo);$i++){&lt;br /&gt;
        if($arreglo[$i]&amp;lt;$arreglo[$posmenor]){&lt;br /&gt;
            $posmenor=$i;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return $posmenor;}function OrdenamientoPorSeleccion(&amp;amp;$arreglo){&lt;br /&gt;
    for($i=0;$i&amp;lt;count($arreglo);$i++){&lt;br /&gt;
        $posmenor=PosicionMenorElemento($arreglo,$i);&lt;br /&gt;
        if($posmenor&amp;gt;$i){&lt;br /&gt;
            IntercambiarElementos($arreglo,$i,$posmenor);&lt;br /&gt;
        }&lt;br /&gt;
    }}&lt;br /&gt;
Python&lt;br /&gt;
def seleccion(lista)&lt;br /&gt;
  n = len(lista)&lt;br /&gt;
 &lt;br /&gt;
  for i in range(0,n-1):&lt;br /&gt;
    k = i&lt;br /&gt;
    t = lista[i]&lt;br /&gt;
    for j in range(i,n):&lt;br /&gt;
      if lista[j] &amp;lt; t:&lt;br /&gt;
        k = j&lt;br /&gt;
        t = lista[j]&lt;br /&gt;
    lista[k] = lista[i]&lt;br /&gt;
    lista[i] = t&lt;br /&gt;
 &lt;br /&gt;
  return lista&lt;br /&gt;
Pascal&lt;br /&gt;
Procedure OrdSel (var Sec : TipSec; TamSec : Integer);var&lt;br /&gt;
   i, j, min, num : Integer;begin&lt;br /&gt;
   for i := 1 to TamSec-1 do&lt;br /&gt;
   begin&lt;br /&gt;
      min := i;&lt;br /&gt;
      for j := i+1 to TamSec do&lt;br /&gt;
      begin&lt;br /&gt;
         NumOpr := NumOpr + 1;&lt;br /&gt;
         if Sec[j] &amp;lt; Sec[min] then&lt;br /&gt;
            min := j;&lt;br /&gt;
      end;&lt;br /&gt;
      num := Sec[min];&lt;br /&gt;
      Sec[min] := Sec[i];&lt;br /&gt;
      Sec[i] := num;&lt;br /&gt;
   end;end;&lt;br /&gt;
Game Maker Language&lt;br /&gt;
// array de extensión nfor(i=0 ; i&amp;lt;n-1 ; i+=1){&lt;br /&gt;
   menor = i;&lt;br /&gt;
   for(j=i+1 ; j&amp;lt;n; j+=1)&lt;br /&gt;
   {&lt;br /&gt;
      if (vector[menor] &amp;gt; vector[j]) {menor = j;}&lt;br /&gt;
   }&lt;br /&gt;
   temp = vector[menor];&lt;br /&gt;
   vector[menor] = vector[i];&lt;br /&gt;
   vector[i] = temp;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Ordenamiento de burbuja]]&lt;br /&gt;
*[[Algoritmos de clasificación no supervisada]]&lt;br /&gt;
*[[Algoritmos jerárquicos]]&lt;br /&gt;
*[[Algoritmos matemáticos]]&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_por_selecci%C3%B3n]. &lt;br /&gt;
 &lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979634</id>
		<title>Algoritmo de ordenamiento por selección</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979634"/>
		<updated>2011-09-30T17:46:48Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Selección|imagen=Selection-Sort-Animation.gif&lt;br /&gt;
|tamaño height 200&lt;br /&gt;
|concepto=Algoritmo que ubica elementos de una lista o vector, en una secuencia, dada por una relación de orden, tomando como punto de partida el menor elemento.}}&lt;br /&gt;
 &lt;br /&gt;
'''Algoritmo de ordenamiento por Selección (Selection Sort en [[inglés]]):''' Consiste en encontrar el menor de todos los elementos del arreglo o vector e intercambiarlo con el que está en la primera posición. Luego el segundo mas pequeño, y así sucesivamente hasta ordenarlo todo. Su implementación requiere O(n2) comparaciones e intercambios para ordenar una secuencia de elementos.&lt;br /&gt;
&lt;br /&gt;
== Descripción ==&lt;br /&gt;
&lt;br /&gt;
Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas, la operación de intercambiar  los elementos sería más costosa en este caso.&lt;br /&gt;
Su funcionamiento se puede definir de forma general como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Buscar el mínimo elemento entre una posición i y el final de la lista&lt;br /&gt;
* Intercambiar el mínimo con el elemento de la posición i&lt;br /&gt;
&lt;br /&gt;
Así, se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos indexados desde el 1:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''para''' i=1 '''hasta''' n-1;&lt;br /&gt;
    minimo = i;&lt;br /&gt;
    '''para''' j=i+1 '''hasta''' n&lt;br /&gt;
        '''si''' lista[j] &amp;lt; lista[minimo] '''entonces'''&lt;br /&gt;
            minimo = j &lt;br /&gt;
        '''fin si'''&lt;br /&gt;
    '''fin para'''&lt;br /&gt;
    intercambiar(lista[i], lista[minimo])&lt;br /&gt;
'''fin para'''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
&lt;br /&gt;
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'].&lt;br /&gt;
Se empieza por recorrer el arreglo hasta encontrar el menor elemento. En este caso el menor elemento es la primera 'a'. De manera que no ocurre ningún cambio. Luego se procede a buscar el siguiente elemento y se encuentra la segunda 'a'.&lt;br /&gt;
Esta se intercambia con el dato que está en la segunda posición, la 's', quedando el arreglo así después de dos recorridos: a = ['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e'].&lt;br /&gt;
El siguiente elemento, el tercero en orden de menor mayor es la primera 'e', la cual se intercambia con lo que está en la tercera posición, o sea, la 'o'. Le sigue la segunda 's', la cual es intercambiada con la 'r'.&lt;br /&gt;
El arreglo ahora se ve de la siguiente manera: a = ['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r'].&lt;br /&gt;
De esta manera se va buscando el elemento que debe ir en la siguiente posición hasta ordenar todo el arreglo.&lt;br /&gt;
 &lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
&lt;br /&gt;
El ciclo externo se ejecuta n veces para una lista de n elementos, o sea que para ordenar un vector de n términos, tiene que realizar siempre el mismo número de comparaciones. &lt;br /&gt;
'''c(n)= (n2-n)/2'''&lt;br /&gt;
Cada búsqueda requiere comparar todos los elementos no clasificados, de manera que el número de comparaciones c(n) no depende del orden de los términos, si no del número de términos; por lo que este algoritmo presenta un comportamiento constante independiente del orden de los datos. Luego la complejidad es del orden n2. &lt;br /&gt;
&lt;br /&gt;
== Estabilidad, Ventajas y Desventajas==&lt;br /&gt;
&lt;br /&gt;
Puede que exista algo de discrepancia  en cuanto a si es o no estable este algoritmo, pero en realidad esta implementación parece ser bastante estable. Se puede verificar esto ordenando un conjunto de datos que tenga un par de ellos con la misma clave. Se vera claramente que el orden relativo entre ellos es conservado. Algunos autores no lo consideran asi, pero independientemente de esto, este algoritmo tienes entre sus '''ventajas:'''&lt;br /&gt;
Es fácil su implementación.&lt;br /&gt;
No requiere memoria      adicional.&lt;br /&gt;
Realiza pocos intercambios.&lt;br /&gt;
Tiene un rendimiento      constante, pues existe poca diferencia entre el peor y el mejor caso.&lt;br /&gt;
Como todos también tiene algunas '''desventajas:'''&lt;br /&gt;
Es lento y poco eficiente      cuando se usa en listas grandes o medianas.&lt;br /&gt;
Realiza numerosas      comparaciones.&lt;br /&gt;
&lt;br /&gt;
== Implementación==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el Ordenamiento por Selección en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
&lt;br /&gt;
'''Java'''&lt;br /&gt;
void selecccion(int[] a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length - 1; i++)&lt;br /&gt;
        {&lt;br /&gt;
                int min = i;&lt;br /&gt;
                for (int j = i + 1; j &amp;lt; a.length; j++)&lt;br /&gt;
                {&lt;br /&gt;
                        if (a[j] &amp;lt; a[min])&lt;br /&gt;
                        {&lt;br /&gt;
                                min = j;&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
                if (i != min) &lt;br /&gt;
                {&lt;br /&gt;
                        int aux= a[i];&lt;br /&gt;
                        a[i] = a[min];&lt;br /&gt;
                        a[min] = aux;&lt;br /&gt;
                }&lt;br /&gt;
        }}&lt;br /&gt;
&lt;br /&gt;
C&lt;br /&gt;
&lt;br /&gt;
void ordsel(int * x, int n){&lt;br /&gt;
   int minimo=0,i,j;&lt;br /&gt;
   int swap;&lt;br /&gt;
   for(i=0 ; i&amp;lt;n-1 ; i++)&lt;br /&gt;
   {&lt;br /&gt;
      minimo=i;&lt;br /&gt;
      for(j=i+1 ; j&amp;lt;n ; j++)&lt;br /&gt;
         if (x[minimo] &amp;gt; x[j]) &lt;br /&gt;
            minimo=j;&lt;br /&gt;
      swap=x[minimo];&lt;br /&gt;
      x[minimo]=x[i];&lt;br /&gt;
      x[i]=swap;&lt;br /&gt;
   }}&lt;br /&gt;
Basic&lt;br /&gt;
For i = 1 To n - 1&lt;br /&gt;
   minimo = i&lt;br /&gt;
   For j = i + 1 To n&lt;br /&gt;
      If x(minimo) &amp;gt; x(j) Then&lt;br /&gt;
         minimo = j&lt;br /&gt;
      End If&lt;br /&gt;
   Next j&lt;br /&gt;
   temp = x(i)&lt;br /&gt;
   x(i) = x(minimo)&lt;br /&gt;
   x(minimo) = tempNext i&lt;br /&gt;
C++&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;#include &amp;lt;vector&amp;gt;using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 template &amp;lt;class T&amp;gt;void ordena_seleccion(vector&amp;lt;T&amp;gt;&amp;amp; v) {&lt;br /&gt;
    for (int i = 0; i &amp;lt; v.size() - 1; ++i) {&lt;br /&gt;
        int min = i;&lt;br /&gt;
        for (int c = i + 1; c &amp;lt; v.size(); ++c) {&lt;br /&gt;
            if (v[min] &amp;gt; v[c]) min = c;&lt;br /&gt;
        }&lt;br /&gt;
        T aux = v[i];&lt;br /&gt;
        v[i] = v[min];&lt;br /&gt;
        v[min] = aux;&lt;br /&gt;
    }}&lt;br /&gt;
Perl&lt;br /&gt;
sub seleccion {&lt;br /&gt;
    my $array = shift;    # Recibimos una referencia a un array&lt;br /&gt;
 &lt;br /&gt;
    my $i;    # Índice del elemento a comparar&lt;br /&gt;
    my $j;    # Índice del valor mínimo a encontrar&lt;br /&gt;
 &lt;br /&gt;
    # Para todos los elementos menos el último&lt;br /&gt;
    for ( $i = 0; $i &amp;lt; $#$array; $i++ ) {&lt;br /&gt;
 &lt;br /&gt;
        # Índice y valor del elemento a comparar&lt;br /&gt;
        my ( $m, $x ) = ( $i, $array-&amp;gt;[ $m ] );   &lt;br /&gt;
 &lt;br /&gt;
        # Buscamos el valor más pequeño de todos los demás&lt;br /&gt;
        for ( $j = $i + 1; $j &amp;lt; @$array; $j++ ) {&lt;br /&gt;
 &lt;br /&gt;
            ( $m, $x ) = ( $j, $array-&amp;gt;[ $j ] )   # Nuevo mínimo encontrado&lt;br /&gt;
                if $array-&amp;gt;[ $j ] &amp;lt; $x;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        # Hacemos el intercambio de elementos, si es necesario&lt;br /&gt;
        @$array[ $m, $i ] = @$array[ $i, $m ]  if $m != $i;&lt;br /&gt;
    }}&lt;br /&gt;
JavaScript&lt;br /&gt;
for(var i=0 ; i&amp;lt;vector.length-1 ; i++){&lt;br /&gt;
   var menor = i;&lt;br /&gt;
   for(var j=i+1 ; j&amp;lt;vector.length ; j++)&lt;br /&gt;
   {&lt;br /&gt;
      if (vector[menor] &amp;gt; vector[j]) menor = j;&lt;br /&gt;
   }&lt;br /&gt;
   var temp = vector[menor];&lt;br /&gt;
   vector[menor] = vector[i];&lt;br /&gt;
   vector[i] = temp;}&lt;br /&gt;
&lt;br /&gt;
PHP&lt;br /&gt;
function IntercambiarElementos(&amp;amp;$arreglo,$pos1,$pos2){&lt;br /&gt;
    $aux=$arreglo[$pos1];&lt;br /&gt;
    $arreglo[$pos1]=$arreglo[$pos2];&lt;br /&gt;
    $arreglo[$pos2]=$aux;}function PosicionMenorElemento($arreglo,$posinicial){&lt;br /&gt;
    $posmenor=$posinicial;&lt;br /&gt;
    for($i=$posinicial+1;$i&amp;lt;count($arreglo);$i++){&lt;br /&gt;
        if($arreglo[$i]&amp;lt;$arreglo[$posmenor]){&lt;br /&gt;
            $posmenor=$i;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return $posmenor;}function OrdenamientoPorSeleccion(&amp;amp;$arreglo){&lt;br /&gt;
    for($i=0;$i&amp;lt;count($arreglo);$i++){&lt;br /&gt;
        $posmenor=PosicionMenorElemento($arreglo,$i);&lt;br /&gt;
        if($posmenor&amp;gt;$i){&lt;br /&gt;
            IntercambiarElementos($arreglo,$i,$posmenor);&lt;br /&gt;
        }&lt;br /&gt;
    }}&lt;br /&gt;
Python&lt;br /&gt;
def seleccion(lista)&lt;br /&gt;
  n = len(lista)&lt;br /&gt;
 &lt;br /&gt;
  for i in range(0,n-1):&lt;br /&gt;
    k = i&lt;br /&gt;
    t = lista[i]&lt;br /&gt;
    for j in range(i,n):&lt;br /&gt;
      if lista[j] &amp;lt; t:&lt;br /&gt;
        k = j&lt;br /&gt;
        t = lista[j]&lt;br /&gt;
    lista[k] = lista[i]&lt;br /&gt;
    lista[i] = t&lt;br /&gt;
 &lt;br /&gt;
  return lista&lt;br /&gt;
Pascal&lt;br /&gt;
Procedure OrdSel (var Sec : TipSec; TamSec : Integer);var&lt;br /&gt;
   i, j, min, num : Integer;begin&lt;br /&gt;
   for i := 1 to TamSec-1 do&lt;br /&gt;
   begin&lt;br /&gt;
      min := i;&lt;br /&gt;
      for j := i+1 to TamSec do&lt;br /&gt;
      begin&lt;br /&gt;
         NumOpr := NumOpr + 1;&lt;br /&gt;
         if Sec[j] &amp;lt; Sec[min] then&lt;br /&gt;
            min := j;&lt;br /&gt;
      end;&lt;br /&gt;
      num := Sec[min];&lt;br /&gt;
      Sec[min] := Sec[i];&lt;br /&gt;
      Sec[i] := num;&lt;br /&gt;
   end;end;&lt;br /&gt;
Game Maker Language&lt;br /&gt;
// array de extensión nfor(i=0 ; i&amp;lt;n-1 ; i+=1){&lt;br /&gt;
   menor = i;&lt;br /&gt;
   for(j=i+1 ; j&amp;lt;n; j+=1)&lt;br /&gt;
   {&lt;br /&gt;
      if (vector[menor] &amp;gt; vector[j]) {menor = j;}&lt;br /&gt;
   }&lt;br /&gt;
   temp = vector[menor];&lt;br /&gt;
   vector[menor] = vector[i];&lt;br /&gt;
   vector[i] = temp;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Ordenamiento de burbuja]]&lt;br /&gt;
*[[Algoritmos de clasificación no supervisada]]&lt;br /&gt;
*[[Algoritmos jerárquicos]]&lt;br /&gt;
*[[Algoritmos matemáticos]]&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
 &lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979600</id>
		<title>Algoritmo de ordenamiento por selección</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979600"/>
		<updated>2011-09-30T17:42:44Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Selección|imagen=Selection-Sort-Animation.gif&lt;br /&gt;
|tamaño height 200&lt;br /&gt;
|concepto=Algoritmo que ubica elementos de una lista o vector, en una secuencia, dada por una relación de orden, tomando como punto de partida el menor elemento.}}&lt;br /&gt;
 &lt;br /&gt;
'''Algoritmo de ordenamiento por Selección (Selection Sort en [[inglés]]):''' Consiste en encontrar el menor de todos los elementos del arreglo o vector e intercambiarlo con el que está en la primera posición. Luego el segundo mas pequeño, y así sucesivamente hasta ordenarlo todo. Su implementación requiere O(n2) comparaciones e intercambios para ordenar una secuencia de elementos.&lt;br /&gt;
&lt;br /&gt;
== Descripción ==&lt;br /&gt;
&lt;br /&gt;
Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas, la operación de intercambiar  los elementos sería más costosa en este caso.&lt;br /&gt;
Su funcionamiento se puede definir de forma general como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Buscar el mínimo elemento entre una posición i y el final de la lista&lt;br /&gt;
* Intercambiar el mínimo con el elemento de la posición i&lt;br /&gt;
&lt;br /&gt;
Así, se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos indexados desde el 1:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''para''' i=1 '''hasta''' n-1&lt;br /&gt;
    minimo = i;&lt;br /&gt;
    '''para''' j=i+1 '''hasta''' n&lt;br /&gt;
        '''si''' lista[j] &amp;lt; lista[minimo] '''entonces'''&lt;br /&gt;
            minimo = j &lt;br /&gt;
        '''fin si'''&lt;br /&gt;
    '''fin para'''&lt;br /&gt;
    intercambiar(lista[i], lista[minimo])&lt;br /&gt;
'''fin para'''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
&lt;br /&gt;
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'].&lt;br /&gt;
Se empieza por recorrer el arreglo hasta encontrar el menor elemento. En este caso el menor elemento es la primera 'a'. De manera que no ocurre ningún cambio. Luego se procede a buscar el siguiente elemento y se encuentra la segunda 'a'.&lt;br /&gt;
Esta se intercambia con el dato que está en la segunda posición, la 's', quedando el arreglo así después de dos recorridos: a = ['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e'].&lt;br /&gt;
El siguiente elemento, el tercero en orden de menor mayor es la primera 'e', la cual se intercambia con lo que está en la tercera posición, o sea, la 'o'. Le sigue la segunda 's', la cual es intercambiada con la 'r'.&lt;br /&gt;
El arreglo ahora se ve de la siguiente manera: a = ['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r'].&lt;br /&gt;
De esta manera se va buscando el elemento que debe ir en la siguiente posición hasta ordenar todo el arreglo.&lt;br /&gt;
 &lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
&lt;br /&gt;
El ciclo externo se ejecuta n veces para una lista de n elementos, o sea que para ordenar un vector de n términos, tiene que realizar siempre el mismo número de comparaciones. &lt;br /&gt;
c(n)= (n2-n)/2&lt;br /&gt;
Cada búsqueda requiere comparar todos los elementos no clasificados, de manera que el número de comparaciones c(n) no depende del orden de los términos, si no del número de términos; por lo que este algoritmo presenta un comportamiento constante independiente del orden de los datos. Luego la complejidad es del orden n2. &lt;br /&gt;
&lt;br /&gt;
== Estabilidad, Ventajas y Desventajas==&lt;br /&gt;
&lt;br /&gt;
Puede que exista algo de discrepancia  en cuanto a si es o no estable este algoritmo, pero en realidad esta implementación parece ser bastante estable. Se puede verificar esto ordenando un conjunto de datos que tenga un par de ellos con la misma clave. Se vera claramente que el orden relativo entre ellos es conservado. Algunos autores no lo consideran asi, pero independientemente de esto, este algoritmo tienes entre sus ventajas:&lt;br /&gt;
Es fácil su implementación.&lt;br /&gt;
No requiere memoria      adicional.&lt;br /&gt;
Realiza pocos intercambios.&lt;br /&gt;
Tiene un rendimiento      constante, pues existe poca diferencia entre el peor y el mejor caso.&lt;br /&gt;
Como todos también tiene algunas desventajas:&lt;br /&gt;
Es lento y poco eficiente      cuando se usa en listas grandes o medianas.&lt;br /&gt;
Realiza numerosas      comparaciones.&lt;br /&gt;
&lt;br /&gt;
== Implementación==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el Ordenamiento por Selección en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
&lt;br /&gt;
Java&lt;br /&gt;
void selecccion(int[] a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length - 1; i++)&lt;br /&gt;
        {&lt;br /&gt;
                int min = i;&lt;br /&gt;
                for (int j = i + 1; j &amp;lt; a.length; j++)&lt;br /&gt;
                {&lt;br /&gt;
                        if (a[j] &amp;lt; a[min])&lt;br /&gt;
                        {&lt;br /&gt;
                                min = j;&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
                if (i != min) &lt;br /&gt;
                {&lt;br /&gt;
                        int aux= a[i];&lt;br /&gt;
                        a[i] = a[min];&lt;br /&gt;
                        a[min] = aux;&lt;br /&gt;
                }&lt;br /&gt;
        }}&lt;br /&gt;
&lt;br /&gt;
C&lt;br /&gt;
&lt;br /&gt;
void ordsel(int * x, int n){&lt;br /&gt;
   int minimo=0,i,j;&lt;br /&gt;
   int swap;&lt;br /&gt;
   for(i=0 ; i&amp;lt;n-1 ; i++)&lt;br /&gt;
   {&lt;br /&gt;
      minimo=i;&lt;br /&gt;
      for(j=i+1 ; j&amp;lt;n ; j++)&lt;br /&gt;
         if (x[minimo] &amp;gt; x[j]) &lt;br /&gt;
            minimo=j;&lt;br /&gt;
      swap=x[minimo];&lt;br /&gt;
      x[minimo]=x[i];&lt;br /&gt;
      x[i]=swap;&lt;br /&gt;
   }}&lt;br /&gt;
Basic&lt;br /&gt;
For i = 1 To n - 1&lt;br /&gt;
   minimo = i&lt;br /&gt;
   For j = i + 1 To n&lt;br /&gt;
      If x(minimo) &amp;gt; x(j) Then&lt;br /&gt;
         minimo = j&lt;br /&gt;
      End If&lt;br /&gt;
   Next j&lt;br /&gt;
   temp = x(i)&lt;br /&gt;
   x(i) = x(minimo)&lt;br /&gt;
   x(minimo) = tempNext i&lt;br /&gt;
C++&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;#include &amp;lt;vector&amp;gt;using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 template &amp;lt;class T&amp;gt;void ordena_seleccion(vector&amp;lt;T&amp;gt;&amp;amp; v) {&lt;br /&gt;
    for (int i = 0; i &amp;lt; v.size() - 1; ++i) {&lt;br /&gt;
        int min = i;&lt;br /&gt;
        for (int c = i + 1; c &amp;lt; v.size(); ++c) {&lt;br /&gt;
            if (v[min] &amp;gt; v[c]) min = c;&lt;br /&gt;
        }&lt;br /&gt;
        T aux = v[i];&lt;br /&gt;
        v[i] = v[min];&lt;br /&gt;
        v[min] = aux;&lt;br /&gt;
    }}&lt;br /&gt;
Perl&lt;br /&gt;
sub seleccion {&lt;br /&gt;
    my $array = shift;    # Recibimos una referencia a un array&lt;br /&gt;
 &lt;br /&gt;
    my $i;    # Índice del elemento a comparar&lt;br /&gt;
    my $j;    # Índice del valor mínimo a encontrar&lt;br /&gt;
 &lt;br /&gt;
    # Para todos los elementos menos el último&lt;br /&gt;
    for ( $i = 0; $i &amp;lt; $#$array; $i++ ) {&lt;br /&gt;
 &lt;br /&gt;
        # Índice y valor del elemento a comparar&lt;br /&gt;
        my ( $m, $x ) = ( $i, $array-&amp;gt;[ $m ] );   &lt;br /&gt;
 &lt;br /&gt;
        # Buscamos el valor más pequeño de todos los demás&lt;br /&gt;
        for ( $j = $i + 1; $j &amp;lt; @$array; $j++ ) {&lt;br /&gt;
 &lt;br /&gt;
            ( $m, $x ) = ( $j, $array-&amp;gt;[ $j ] )   # Nuevo mínimo encontrado&lt;br /&gt;
                if $array-&amp;gt;[ $j ] &amp;lt; $x;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        # Hacemos el intercambio de elementos, si es necesario&lt;br /&gt;
        @$array[ $m, $i ] = @$array[ $i, $m ]  if $m != $i;&lt;br /&gt;
    }}&lt;br /&gt;
JavaScript&lt;br /&gt;
for(var i=0 ; i&amp;lt;vector.length-1 ; i++){&lt;br /&gt;
   var menor = i;&lt;br /&gt;
   for(var j=i+1 ; j&amp;lt;vector.length ; j++)&lt;br /&gt;
   {&lt;br /&gt;
      if (vector[menor] &amp;gt; vector[j]) menor = j;&lt;br /&gt;
   }&lt;br /&gt;
   var temp = vector[menor];&lt;br /&gt;
   vector[menor] = vector[i];&lt;br /&gt;
   vector[i] = temp;}&lt;br /&gt;
&lt;br /&gt;
PHP&lt;br /&gt;
function IntercambiarElementos(&amp;amp;$arreglo,$pos1,$pos2){&lt;br /&gt;
    $aux=$arreglo[$pos1];&lt;br /&gt;
    $arreglo[$pos1]=$arreglo[$pos2];&lt;br /&gt;
    $arreglo[$pos2]=$aux;}function PosicionMenorElemento($arreglo,$posinicial){&lt;br /&gt;
    $posmenor=$posinicial;&lt;br /&gt;
    for($i=$posinicial+1;$i&amp;lt;count($arreglo);$i++){&lt;br /&gt;
        if($arreglo[$i]&amp;lt;$arreglo[$posmenor]){&lt;br /&gt;
            $posmenor=$i;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return $posmenor;}function OrdenamientoPorSeleccion(&amp;amp;$arreglo){&lt;br /&gt;
    for($i=0;$i&amp;lt;count($arreglo);$i++){&lt;br /&gt;
        $posmenor=PosicionMenorElemento($arreglo,$i);&lt;br /&gt;
        if($posmenor&amp;gt;$i){&lt;br /&gt;
            IntercambiarElementos($arreglo,$i,$posmenor);&lt;br /&gt;
        }&lt;br /&gt;
    }}&lt;br /&gt;
Python&lt;br /&gt;
def seleccion(lista)&lt;br /&gt;
  n = len(lista)&lt;br /&gt;
 &lt;br /&gt;
  for i in range(0,n-1):&lt;br /&gt;
    k = i&lt;br /&gt;
    t = lista[i]&lt;br /&gt;
    for j in range(i,n):&lt;br /&gt;
      if lista[j] &amp;lt; t:&lt;br /&gt;
        k = j&lt;br /&gt;
        t = lista[j]&lt;br /&gt;
    lista[k] = lista[i]&lt;br /&gt;
    lista[i] = t&lt;br /&gt;
 &lt;br /&gt;
  return lista&lt;br /&gt;
Pascal&lt;br /&gt;
Procedure OrdSel (var Sec : TipSec; TamSec : Integer);var&lt;br /&gt;
   i, j, min, num : Integer;begin&lt;br /&gt;
   for i := 1 to TamSec-1 do&lt;br /&gt;
   begin&lt;br /&gt;
      min := i;&lt;br /&gt;
      for j := i+1 to TamSec do&lt;br /&gt;
      begin&lt;br /&gt;
         NumOpr := NumOpr + 1;&lt;br /&gt;
         if Sec[j] &amp;lt; Sec[min] then&lt;br /&gt;
            min := j;&lt;br /&gt;
      end;&lt;br /&gt;
      num := Sec[min];&lt;br /&gt;
      Sec[min] := Sec[i];&lt;br /&gt;
      Sec[i] := num;&lt;br /&gt;
   end;end;&lt;br /&gt;
Game Maker Language&lt;br /&gt;
// array de extensión nfor(i=0 ; i&amp;lt;n-1 ; i+=1){&lt;br /&gt;
   menor = i;&lt;br /&gt;
   for(j=i+1 ; j&amp;lt;n; j+=1)&lt;br /&gt;
   {&lt;br /&gt;
      if (vector[menor] &amp;gt; vector[j]) {menor = j;}&lt;br /&gt;
   }&lt;br /&gt;
   temp = vector[menor];&lt;br /&gt;
   vector[menor] = vector[i];&lt;br /&gt;
   vector[i] = temp;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Ordenamiento de burbuja]]&lt;br /&gt;
*[[Algoritmos de clasificación no supervisada]]&lt;br /&gt;
*[[Algoritmos jerárquicos]]&lt;br /&gt;
*[[Algoritmos matemáticos]]&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
 &lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979577</id>
		<title>Algoritmo de ordenamiento por selección</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979577"/>
		<updated>2011-09-30T17:39:39Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Selección|imagen=Selection-Sort-Animation1.gif&lt;br /&gt;
|tamaño height 200&lt;br /&gt;
|concepto=Algoritmo que ubica elementos de una lista o vector, en una secuencia, dada por una relación de orden, tomando como punto de partida el menor elemento.}}&lt;br /&gt;
 &lt;br /&gt;
'''Algoritmo de ordenamiento por Selección (Selection Sort en [[inglés]]):''' Consiste en encontrar el menor de todos los elementos del arreglo o vector e intercambiarlo con el que está en la primera posición. Luego el segundo mas pequeño, y así sucesivamente hasta ordenarlo todo. Su implementación requiere O(n2) comparaciones e intercambios para ordenar una secuencia de elementos.&lt;br /&gt;
== Descripción ==&lt;br /&gt;
Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas, la operación de intercambiar  los elementos sería más costosa en este caso.&lt;br /&gt;
Su funcionamiento se puede definir de forma general como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Buscar el mínimo elemento entre una posición i y el final de la lista&lt;br /&gt;
* Intercambiar el mínimo con el elemento de la posición i&lt;br /&gt;
&lt;br /&gt;
Así, se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos indexados desde el 1:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''para''' i=1 '''hasta''' n-1&lt;br /&gt;
    minimo = i;&lt;br /&gt;
    '''para''' j=i+1 '''hasta''' n&lt;br /&gt;
        '''si''' lista[j] &amp;lt; lista[minimo] '''entonces'''&lt;br /&gt;
            minimo = j &lt;br /&gt;
        '''fin si'''&lt;br /&gt;
    '''fin para'''&lt;br /&gt;
    intercambiar(lista[i], lista[minimo])&lt;br /&gt;
'''fin para'''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'].&lt;br /&gt;
Se empieza por recorrer el arreglo hasta encontrar el menor elemento. En este caso el menor elemento es la primera 'a'. De manera que no ocurre ningún cambio. Luego se procede a buscar el siguiente elemento y se encuentra la segunda 'a'.&lt;br /&gt;
Esta se intercambia con el dato que está en la segunda posición, la 's', quedando el arreglo así después de dos recorridos: a = ['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e'].&lt;br /&gt;
El siguiente elemento, el tercero en orden de menor mayor es la primera 'e', la cual se intercambia con lo que está en la tercera posición, o sea, la 'o'. Le sigue la segunda 's', la cual es intercambiada con la 'r'.&lt;br /&gt;
El arreglo ahora se ve de la siguiente manera: a = ['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r'].&lt;br /&gt;
De esta manera se va buscando el elemento que debe ir en la siguiente posición hasta ordenar todo el arreglo.&lt;br /&gt;
 &lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
El ciclo externo se ejecuta n veces para una lista de n elementos, o sea que para ordenar un vector de n términos, tiene que realizar siempre el mismo número de comparaciones. &lt;br /&gt;
c(n)= (n2-n)/2&lt;br /&gt;
Cada búsqueda requiere comparar todos los elementos no clasificados, de manera que el número de comparaciones c(n) no depende del orden de los términos, si no del número de términos; por lo que este algoritmo presenta un comportamiento constante independiente del orden de los datos. Luego la complejidad es del orden n2. &lt;br /&gt;
== Estabilidad, Ventajas y Desventajas==&lt;br /&gt;
Puede que exista algo de discrepancia  en cuanto a si es o no estable este algoritmo, pero en realidad esta implementación parece ser bastante estable. Se puede verificar esto ordenando un conjunto de datos que tenga un par de ellos con la misma clave. Se vera claramente que el orden relativo entre ellos es conservado. Algunos autores no lo consideran asi, pero independientemente de esto, este algoritmo tienes entre sus ventajas:&lt;br /&gt;
Es fácil su implementación.&lt;br /&gt;
No requiere memoria      adicional.&lt;br /&gt;
Realiza pocos intercambios.&lt;br /&gt;
Tiene un rendimiento      constante, pues existe poca diferencia entre el peor y el mejor caso.&lt;br /&gt;
Como todos también tiene algunas desventajas:&lt;br /&gt;
Es lento y poco eficiente      cuando se usa en listas grandes o medianas.&lt;br /&gt;
Realiza numerosas      comparaciones.&lt;br /&gt;
== Implementación==&lt;br /&gt;
A continuación se muestra el Ordenamiento por Selección en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
&lt;br /&gt;
Java&lt;br /&gt;
void selecccion(int[] a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length - 1; i++)&lt;br /&gt;
        {&lt;br /&gt;
                int min = i;&lt;br /&gt;
                for (int j = i + 1; j &amp;lt; a.length; j++)&lt;br /&gt;
                {&lt;br /&gt;
                        if (a[j] &amp;lt; a[min])&lt;br /&gt;
                        {&lt;br /&gt;
                                min = j;&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
                if (i != min) &lt;br /&gt;
                {&lt;br /&gt;
                        int aux= a[i];&lt;br /&gt;
                        a[i] = a[min];&lt;br /&gt;
                        a[min] = aux;&lt;br /&gt;
                }&lt;br /&gt;
        }}&lt;br /&gt;
&lt;br /&gt;
C&lt;br /&gt;
&lt;br /&gt;
void ordsel(int * x, int n){&lt;br /&gt;
   int minimo=0,i,j;&lt;br /&gt;
   int swap;&lt;br /&gt;
   for(i=0 ; i&amp;lt;n-1 ; i++)&lt;br /&gt;
   {&lt;br /&gt;
      minimo=i;&lt;br /&gt;
      for(j=i+1 ; j&amp;lt;n ; j++)&lt;br /&gt;
         if (x[minimo] &amp;gt; x[j]) &lt;br /&gt;
            minimo=j;&lt;br /&gt;
      swap=x[minimo];&lt;br /&gt;
      x[minimo]=x[i];&lt;br /&gt;
      x[i]=swap;&lt;br /&gt;
   }}&lt;br /&gt;
Basic&lt;br /&gt;
For i = 1 To n - 1&lt;br /&gt;
   minimo = i&lt;br /&gt;
   For j = i + 1 To n&lt;br /&gt;
      If x(minimo) &amp;gt; x(j) Then&lt;br /&gt;
         minimo = j&lt;br /&gt;
      End If&lt;br /&gt;
   Next j&lt;br /&gt;
   temp = x(i)&lt;br /&gt;
   x(i) = x(minimo)&lt;br /&gt;
   x(minimo) = tempNext i&lt;br /&gt;
C++&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;#include &amp;lt;vector&amp;gt;using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 template &amp;lt;class T&amp;gt;void ordena_seleccion(vector&amp;lt;T&amp;gt;&amp;amp; v) {&lt;br /&gt;
    for (int i = 0; i &amp;lt; v.size() - 1; ++i) {&lt;br /&gt;
        int min = i;&lt;br /&gt;
        for (int c = i + 1; c &amp;lt; v.size(); ++c) {&lt;br /&gt;
            if (v[min] &amp;gt; v[c]) min = c;&lt;br /&gt;
        }&lt;br /&gt;
        T aux = v[i];&lt;br /&gt;
        v[i] = v[min];&lt;br /&gt;
        v[min] = aux;&lt;br /&gt;
    }}&lt;br /&gt;
Perl&lt;br /&gt;
sub seleccion {&lt;br /&gt;
    my $array = shift;    # Recibimos una referencia a un array&lt;br /&gt;
 &lt;br /&gt;
    my $i;    # Índice del elemento a comparar&lt;br /&gt;
    my $j;    # Índice del valor mínimo a encontrar&lt;br /&gt;
 &lt;br /&gt;
    # Para todos los elementos menos el último&lt;br /&gt;
    for ( $i = 0; $i &amp;lt; $#$array; $i++ ) {&lt;br /&gt;
 &lt;br /&gt;
        # Índice y valor del elemento a comparar&lt;br /&gt;
        my ( $m, $x ) = ( $i, $array-&amp;gt;[ $m ] );   &lt;br /&gt;
 &lt;br /&gt;
        # Buscamos el valor más pequeño de todos los demás&lt;br /&gt;
        for ( $j = $i + 1; $j &amp;lt; @$array; $j++ ) {&lt;br /&gt;
 &lt;br /&gt;
            ( $m, $x ) = ( $j, $array-&amp;gt;[ $j ] )   # Nuevo mínimo encontrado&lt;br /&gt;
                if $array-&amp;gt;[ $j ] &amp;lt; $x;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        # Hacemos el intercambio de elementos, si es necesario&lt;br /&gt;
        @$array[ $m, $i ] = @$array[ $i, $m ]  if $m != $i;&lt;br /&gt;
    }}&lt;br /&gt;
JavaScript&lt;br /&gt;
for(var i=0 ; i&amp;lt;vector.length-1 ; i++){&lt;br /&gt;
   var menor = i;&lt;br /&gt;
   for(var j=i+1 ; j&amp;lt;vector.length ; j++)&lt;br /&gt;
   {&lt;br /&gt;
      if (vector[menor] &amp;gt; vector[j]) menor = j;&lt;br /&gt;
   }&lt;br /&gt;
   var temp = vector[menor];&lt;br /&gt;
   vector[menor] = vector[i];&lt;br /&gt;
   vector[i] = temp;}&lt;br /&gt;
&lt;br /&gt;
PHP&lt;br /&gt;
function IntercambiarElementos(&amp;amp;$arreglo,$pos1,$pos2){&lt;br /&gt;
    $aux=$arreglo[$pos1];&lt;br /&gt;
    $arreglo[$pos1]=$arreglo[$pos2];&lt;br /&gt;
    $arreglo[$pos2]=$aux;}function PosicionMenorElemento($arreglo,$posinicial){&lt;br /&gt;
    $posmenor=$posinicial;&lt;br /&gt;
    for($i=$posinicial+1;$i&amp;lt;count($arreglo);$i++){&lt;br /&gt;
        if($arreglo[$i]&amp;lt;$arreglo[$posmenor]){&lt;br /&gt;
            $posmenor=$i;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return $posmenor;}function OrdenamientoPorSeleccion(&amp;amp;$arreglo){&lt;br /&gt;
    for($i=0;$i&amp;lt;count($arreglo);$i++){&lt;br /&gt;
        $posmenor=PosicionMenorElemento($arreglo,$i);&lt;br /&gt;
        if($posmenor&amp;gt;$i){&lt;br /&gt;
            IntercambiarElementos($arreglo,$i,$posmenor);&lt;br /&gt;
        }&lt;br /&gt;
    }}&lt;br /&gt;
Python&lt;br /&gt;
def seleccion(lista)&lt;br /&gt;
  n = len(lista)&lt;br /&gt;
 &lt;br /&gt;
  for i in range(0,n-1):&lt;br /&gt;
    k = i&lt;br /&gt;
    t = lista[i]&lt;br /&gt;
    for j in range(i,n):&lt;br /&gt;
      if lista[j] &amp;lt; t:&lt;br /&gt;
        k = j&lt;br /&gt;
        t = lista[j]&lt;br /&gt;
    lista[k] = lista[i]&lt;br /&gt;
    lista[i] = t&lt;br /&gt;
 &lt;br /&gt;
  return lista&lt;br /&gt;
Pascal&lt;br /&gt;
Procedure OrdSel (var Sec : TipSec; TamSec : Integer);var&lt;br /&gt;
   i, j, min, num : Integer;begin&lt;br /&gt;
   for i := 1 to TamSec-1 do&lt;br /&gt;
   begin&lt;br /&gt;
      min := i;&lt;br /&gt;
      for j := i+1 to TamSec do&lt;br /&gt;
      begin&lt;br /&gt;
         NumOpr := NumOpr + 1;&lt;br /&gt;
         if Sec[j] &amp;lt; Sec[min] then&lt;br /&gt;
            min := j;&lt;br /&gt;
      end;&lt;br /&gt;
      num := Sec[min];&lt;br /&gt;
      Sec[min] := Sec[i];&lt;br /&gt;
      Sec[i] := num;&lt;br /&gt;
   end;end;&lt;br /&gt;
Game Maker Language&lt;br /&gt;
// array de extensión nfor(i=0 ; i&amp;lt;n-1 ; i+=1){&lt;br /&gt;
   menor = i;&lt;br /&gt;
   for(j=i+1 ; j&amp;lt;n; j+=1)&lt;br /&gt;
   {&lt;br /&gt;
      if (vector[menor] &amp;gt; vector[j]) {menor = j;}&lt;br /&gt;
   }&lt;br /&gt;
   temp = vector[menor];&lt;br /&gt;
   vector[menor] = vector[i];&lt;br /&gt;
   vector[i] = temp;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Ordenamiento de burbuja]]&lt;br /&gt;
*[[Algoritmos de clasificación no supervisada]]&lt;br /&gt;
*[[Algoritmos jerárquicos]]&lt;br /&gt;
*[[Algoritmos matemáticos]]&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
 &lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979519</id>
		<title>Algoritmo de ordenamiento por selección</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979519"/>
		<updated>2011-09-30T17:31:38Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Selección|imagen=Selection-Sort-Animation.gif&lt;br /&gt;
|concepto=Algoritmo que ubica elementos de una lista o vector, en una secuencia, dada por una relación de orden, tomando como punto de partida el menor elemento.}}&lt;br /&gt;
 &lt;br /&gt;
'''Algoritmo de ordenamiento por Selección (Selection Sort en [[inglés]]):''' Consiste en encontrar el menor de todos los elementos del arreglo o vector e intercambiarlo con el que está en la primera posición. Luego el segundo mas pequeño, y así sucesivamente hasta ordenarlo todo. Su implementación requiere O(n2) comparaciones e intercambios para ordenar una secuencia de elementos.&lt;br /&gt;
== Descripción ==&lt;br /&gt;
Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas, la operación de intercambiar  los elementos sería más costosa en este caso.&lt;br /&gt;
Su funcionamiento se puede definir de forma general como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Buscar el mínimo elemento entre una posición i y el final de la lista&lt;br /&gt;
* Intercambiar el mínimo con el elemento de la posición i&lt;br /&gt;
&lt;br /&gt;
Así, se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos indexados desde el 1:&lt;br /&gt;
&lt;br /&gt;
'''para''' i=1 '''hasta''' n-1&lt;br /&gt;
    minimo = i;&lt;br /&gt;
    '''para''' j=i+1 '''hasta''' n&lt;br /&gt;
        '''si''' lista[j] &amp;lt; lista[minimo] '''entonces'''&lt;br /&gt;
            minimo = j &lt;br /&gt;
        '''fin si'''&lt;br /&gt;
    '''fin para'''&lt;br /&gt;
    intercambiar(lista[i], lista[minimo])&lt;br /&gt;
'''fin para'''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'].&lt;br /&gt;
Se empieza por recorrer el arreglo hasta encontrar el menor elemento. En este caso el menor elemento es la primera 'a'. De manera que no ocurre ningún cambio. Luego se procede a buscar el siguiente elemento y se encuentra la segunda 'a'.&lt;br /&gt;
Esta se intercambia con el dato que está en la segunda posición, la 's', quedando el arreglo así después de dos recorridos: a = ['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e'].&lt;br /&gt;
El siguiente elemento, el tercero en orden de menor mayor es la primera 'e', la cual se intercambia con lo que está en la tercera posición, o sea, la 'o'. Le sigue la segunda 's', la cual es intercambiada con la 'r'.&lt;br /&gt;
El arreglo ahora se ve de la siguiente manera: a = ['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r'].&lt;br /&gt;
De esta manera se va buscando el elemento que debe ir en la siguiente posición hasta ordenar todo el arreglo.&lt;br /&gt;
 &lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
El ciclo externo se ejecuta n veces para una lista de n elementos, o sea que para ordenar un vector de n términos, tiene que realizar siempre el mismo número de comparaciones. &lt;br /&gt;
c(n)= (n2-n)/2&lt;br /&gt;
Cada búsqueda requiere comparar todos los elementos no clasificados, de manera que el número de comparaciones c(n) no depende del orden de los términos, si no del número de términos; por lo que este algoritmo presenta un comportamiento constante independiente del orden de los datos. Luego la complejidad es del orden n2. &lt;br /&gt;
== Estabilidad, Ventajas y Desventajas==&lt;br /&gt;
Puede que exista algo de discrepancia  en cuanto a si es o no estable este algoritmo, pero en realidad esta implementación parece ser bastante estable. Se puede verificar esto ordenando un conjunto de datos que tenga un par de ellos con la misma clave. Se vera claramente que el orden relativo entre ellos es conservado. Algunos autores no lo consideran asi, pero independientemente de esto, este algoritmo tienes entre sus ventajas:&lt;br /&gt;
Es fácil su implementación.&lt;br /&gt;
No requiere memoria      adicional.&lt;br /&gt;
Realiza pocos intercambios.&lt;br /&gt;
Tiene un rendimiento      constante, pues existe poca diferencia entre el peor y el mejor caso.&lt;br /&gt;
Como todos también tiene algunas desventajas:&lt;br /&gt;
Es lento y poco eficiente      cuando se usa en listas grandes o medianas.&lt;br /&gt;
Realiza numerosas      comparaciones.&lt;br /&gt;
== Implementación==&lt;br /&gt;
A continuación se muestra el Ordenamiento por Selección en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Ordenamiento de burbuja]]&lt;br /&gt;
*[[Algoritmos de clasificación no supervisada]]&lt;br /&gt;
*[[Algoritmos jerárquicos]]&lt;br /&gt;
*[[Algoritmos matemáticos]]&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
 &lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979513</id>
		<title>Algoritmo de ordenamiento por selección</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979513"/>
		<updated>2011-09-30T17:30:43Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Selección|imagen=Selection-Sort-Animation.gif&lt;br /&gt;
|tamaño=height 150&lt;br /&gt;
|concepto=Algoritmo que ubica elementos de una lista o vector, en una secuencia, dada por una relación de orden, tomando como punto de partida el menor elemento.}}&lt;br /&gt;
 &lt;br /&gt;
'''Algoritmo de ordenamiento por Selección (Selection Sort en [[inglés]]):''' Consiste en encontrar el menor de todos los elementos del arreglo o vector e intercambiarlo con el que está en la primera posición. Luego el segundo mas pequeño, y así sucesivamente hasta ordenarlo todo. Su implementación requiere O(n2) comparaciones e intercambios para ordenar una secuencia de elementos.&lt;br /&gt;
== Descripción ==&lt;br /&gt;
Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas, la operación de intercambiar  los elementos sería más costosa en este caso.&lt;br /&gt;
Su funcionamiento se puede definir de forma general como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Buscar el mínimo elemento entre una posición i y el final de la lista&lt;br /&gt;
* Intercambiar el mínimo con el elemento de la posición i&lt;br /&gt;
&lt;br /&gt;
Así, se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos indexados desde el 1:&lt;br /&gt;
&lt;br /&gt;
'''para''' i=1 '''hasta''' n-1&lt;br /&gt;
    minimo = i;&lt;br /&gt;
    '''para''' j=i+1 '''hasta''' n&lt;br /&gt;
        '''si''' lista[j] &amp;lt; lista[minimo] '''entonces'''&lt;br /&gt;
            minimo = j &lt;br /&gt;
        '''fin si'''&lt;br /&gt;
    '''fin para'''&lt;br /&gt;
    intercambiar(lista[i], lista[minimo])&lt;br /&gt;
'''fin para'''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'].&lt;br /&gt;
Se empieza por recorrer el arreglo hasta encontrar el menor elemento. En este caso el menor elemento es la primera 'a'. De manera que no ocurre ningún cambio. Luego se procede a buscar el siguiente elemento y se encuentra la segunda 'a'.&lt;br /&gt;
Esta se intercambia con el dato que está en la segunda posición, la 's', quedando el arreglo así después de dos recorridos: a = ['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e'].&lt;br /&gt;
El siguiente elemento, el tercero en orden de menor mayor es la primera 'e', la cual se intercambia con lo que está en la tercera posición, o sea, la 'o'. Le sigue la segunda 's', la cual es intercambiada con la 'r'.&lt;br /&gt;
El arreglo ahora se ve de la siguiente manera: a = ['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r'].&lt;br /&gt;
De esta manera se va buscando el elemento que debe ir en la siguiente posición hasta ordenar todo el arreglo.&lt;br /&gt;
 &lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
El ciclo externo se ejecuta n veces para una lista de n elementos, o sea que para ordenar un vector de n términos, tiene que realizar siempre el mismo número de comparaciones. &lt;br /&gt;
c(n)= (n2-n)/2&lt;br /&gt;
Cada búsqueda requiere comparar todos los elementos no clasificados, de manera que el número de comparaciones c(n) no depende del orden de los términos, si no del número de términos; por lo que este algoritmo presenta un comportamiento constante independiente del orden de los datos. Luego la complejidad es del orden n2. &lt;br /&gt;
== Estabilidad, Ventajas y Desventajas==&lt;br /&gt;
Puede que exista algo de discrepancia  en cuanto a si es o no estable este algoritmo, pero en realidad esta implementación parece ser bastante estable. Se puede verificar esto ordenando un conjunto de datos que tenga un par de ellos con la misma clave. Se vera claramente que el orden relativo entre ellos es conservado. Algunos autores no lo consideran asi, pero independientemente de esto, este algoritmo tienes entre sus ventajas:&lt;br /&gt;
Es fácil su implementación.&lt;br /&gt;
No requiere memoria      adicional.&lt;br /&gt;
Realiza pocos intercambios.&lt;br /&gt;
Tiene un rendimiento      constante, pues existe poca diferencia entre el peor y el mejor caso.&lt;br /&gt;
Como todos también tiene algunas desventajas:&lt;br /&gt;
Es lento y poco eficiente      cuando se usa en listas grandes o medianas.&lt;br /&gt;
Realiza numerosas      comparaciones.&lt;br /&gt;
== Implementación==&lt;br /&gt;
A continuación se muestra el Ordenamiento por Selección en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Ordenamiento de burbuja]]&lt;br /&gt;
*[[Algoritmos de clasificación no supervisada]]&lt;br /&gt;
*[[Algoritmos jerárquicos]]&lt;br /&gt;
*[[Algoritmos matemáticos]]&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
 &lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979497</id>
		<title>Algoritmo de ordenamiento por selección</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979497"/>
		<updated>2011-09-30T17:28:57Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Selección|imagen=Selection-Sort-Animation.gif&lt;br /&gt;
|tamaño=height 400&lt;br /&gt;
|concepto=Algoritmo que ubica elementos de una lista o vector, en una secuencia, dada por una relación de orden, tomando como punto de partida el menor elemento.}}&lt;br /&gt;
 &lt;br /&gt;
'''Algoritmo de ordenamiento por Selección (Selection Sort en [[inglés]]):''' Consiste en encontrar el menor de todos los elementos del arreglo o vector e intercambiarlo con el que está en la primera posición. Luego el segundo mas pequeño, y así sucesivamente hasta ordenarlo todo. Su implementación requiere O(n2) comparaciones e intercambios para ordenar una secuencia de elementos.&lt;br /&gt;
== Descripción ==&lt;br /&gt;
Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas, la operación de intercambiar  los elementos sería más costosa en este caso.&lt;br /&gt;
Su funcionamiento se puede definir de forma general como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Buscar el mínimo elemento entre una posición i y el final de la lista&lt;br /&gt;
* Intercambiar el mínimo con el elemento de la posición i&lt;br /&gt;
&lt;br /&gt;
Así, se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos indexados desde el 1:&lt;br /&gt;
&lt;br /&gt;
'''para''' i=1 '''hasta''' n-1&lt;br /&gt;
    minimo = i;&lt;br /&gt;
    '''para''' j=i+1 '''hasta''' n&lt;br /&gt;
        '''si''' lista[j] &amp;lt; lista[minimo] '''entonces'''&lt;br /&gt;
            minimo = j &lt;br /&gt;
        '''fin si'''&lt;br /&gt;
    '''fin para'''&lt;br /&gt;
    intercambiar(lista[i], lista[minimo])&lt;br /&gt;
'''fin para'''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'].&lt;br /&gt;
Se empieza por recorrer el arreglo hasta encontrar el menor elemento. En este caso el menor elemento es la primera 'a'. De manera que no ocurre ningún cambio. Luego se procede a buscar el siguiente elemento y se encuentra la segunda 'a'.&lt;br /&gt;
Esta se intercambia con el dato que está en la segunda posición, la 's', quedando el arreglo así después de dos recorridos: a = ['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e'].&lt;br /&gt;
El siguiente elemento, el tercero en orden de menor mayor es la primera 'e', la cual se intercambia con lo que está en la tercera posición, o sea, la 'o'. Le sigue la segunda 's', la cual es intercambiada con la 'r'.&lt;br /&gt;
El arreglo ahora se ve de la siguiente manera: a = ['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r'].&lt;br /&gt;
De esta manera se va buscando el elemento que debe ir en la siguiente posición hasta ordenar todo el arreglo.&lt;br /&gt;
 &lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
El ciclo externo se ejecuta n veces para una lista de n elementos, o sea que para ordenar un vector de n términos, tiene que realizar siempre el mismo número de comparaciones. &lt;br /&gt;
c(n)= (n2-n)/2&lt;br /&gt;
Cada búsqueda requiere comparar todos los elementos no clasificados, de manera que el número de comparaciones c(n) no depende del orden de los términos, si no del número de términos; por lo que este algoritmo presenta un comportamiento constante independiente del orden de los datos. Luego la complejidad es del orden n2. &lt;br /&gt;
== Estabilidad, Ventajas y Desventajas==&lt;br /&gt;
Puede que exista algo de discrepancia  en cuanto a si es o no estable este algoritmo, pero en realidad esta implementación parece ser bastante estable. Se puede verificar esto ordenando un conjunto de datos que tenga un par de ellos con la misma clave. Se vera claramente que el orden relativo entre ellos es conservado. Algunos autores no lo consideran asi, pero independientemente de esto, este algoritmo tienes entre sus ventajas:&lt;br /&gt;
Es fácil su implementación.&lt;br /&gt;
No requiere memoria      adicional.&lt;br /&gt;
Realiza pocos intercambios.&lt;br /&gt;
Tiene un rendimiento      constante, pues existe poca diferencia entre el peor y el mejor caso.&lt;br /&gt;
Como todos también tiene algunas desventajas:&lt;br /&gt;
Es lento y poco eficiente      cuando se usa en listas grandes o medianas.&lt;br /&gt;
Realiza numerosas      comparaciones.&lt;br /&gt;
== Implementación==&lt;br /&gt;
A continuación se muestra el Ordenamiento por Selección en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Ordenamiento de burbuja]]&lt;br /&gt;
*[[Algoritmos de clasificación no supervisada]]&lt;br /&gt;
*[[Algoritmos jerárquicos]]&lt;br /&gt;
*[[Algoritmos matemáticos]]&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
 &lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979531</id>
		<title>Algoritmo de ordenamiento por selección</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979531"/>
		<updated>2011-09-30T17:26:58Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Selección|imagen=Selection-Sort-Animation.gif&lt;br /&gt;
|tamaño height 100&lt;br /&gt;
|concepto=Algoritmo que ubica elementos de una lista o vector, en una secuencia, dada por una relación de orden, tomando como punto de partida el menor elemento.}}&lt;br /&gt;
 &lt;br /&gt;
'''Algoritmo de ordenamiento por Selección (Selection Sort en [[inglés]]):''' Consiste en encontrar el menor de todos los elementos del arreglo o vector e intercambiarlo con el que está en la primera posición. Luego el segundo mas pequeño, y así sucesivamente hasta ordenarlo todo. Su implementación requiere O(n2) comparaciones e intercambios para ordenar una secuencia de elementos.&lt;br /&gt;
== Descripción ==&lt;br /&gt;
Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas, la operación de intercambiar  los elementos sería más costosa en este caso.&lt;br /&gt;
Su funcionamiento se puede definir de forma general como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Buscar el mínimo elemento entre una posición i y el final de la lista&lt;br /&gt;
* Intercambiar el mínimo con el elemento de la posición i&lt;br /&gt;
&lt;br /&gt;
Así, se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos indexados desde el 1:&lt;br /&gt;
&lt;br /&gt;
'''para''' i=1 '''hasta''' n-1&lt;br /&gt;
    minimo = i;&lt;br /&gt;
    '''para''' j=i+1 '''hasta''' n&lt;br /&gt;
        '''si''' lista[j] &amp;lt; lista[minimo] '''entonces'''&lt;br /&gt;
            minimo = j &lt;br /&gt;
        '''fin si'''&lt;br /&gt;
    '''fin para'''&lt;br /&gt;
    intercambiar(lista[i], lista[minimo])&lt;br /&gt;
'''fin para'''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'].&lt;br /&gt;
Se empieza por recorrer el arreglo hasta encontrar el menor elemento. En este caso el menor elemento es la primera 'a'. De manera que no ocurre ningún cambio. Luego se procede a buscar el siguiente elemento y se encuentra la segunda 'a'.&lt;br /&gt;
Esta se intercambia con el dato que está en la segunda posición, la 's', quedando el arreglo así después de dos recorridos: a = ['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e'].&lt;br /&gt;
El siguiente elemento, el tercero en orden de menor mayor es la primera 'e', la cual se intercambia con lo que está en la tercera posición, o sea, la 'o'. Le sigue la segunda 's', la cual es intercambiada con la 'r'.&lt;br /&gt;
El arreglo ahora se ve de la siguiente manera: a = ['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r'].&lt;br /&gt;
De esta manera se va buscando el elemento que debe ir en la siguiente posición hasta ordenar todo el arreglo.&lt;br /&gt;
 &lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
El ciclo externo se ejecuta n veces para una lista de n elementos, o sea que para ordenar un vector de n términos, tiene que realizar siempre el mismo número de comparaciones. &lt;br /&gt;
c(n)= (n2-n)/2&lt;br /&gt;
Cada búsqueda requiere comparar todos los elementos no clasificados, de manera que el número de comparaciones c(n) no depende del orden de los términos, si no del número de términos; por lo que este algoritmo presenta un comportamiento constante independiente del orden de los datos. Luego la complejidad es del orden n2. &lt;br /&gt;
== Estabilidad, Ventajas y Desventajas==&lt;br /&gt;
Puede que exista algo de discrepancia  en cuanto a si es o no estable este algoritmo, pero en realidad esta implementación parece ser bastante estable. Se puede verificar esto ordenando un conjunto de datos que tenga un par de ellos con la misma clave. Se vera claramente que el orden relativo entre ellos es conservado. Algunos autores no lo consideran asi, pero independientemente de esto, este algoritmo tienes entre sus ventajas:&lt;br /&gt;
Es fácil su implementación.&lt;br /&gt;
No requiere memoria      adicional.&lt;br /&gt;
Realiza pocos intercambios.&lt;br /&gt;
Tiene un rendimiento      constante, pues existe poca diferencia entre el peor y el mejor caso.&lt;br /&gt;
Como todos también tiene algunas desventajas:&lt;br /&gt;
Es lento y poco eficiente      cuando se usa en listas grandes o medianas.&lt;br /&gt;
Realiza numerosas      comparaciones.&lt;br /&gt;
== Implementación==&lt;br /&gt;
A continuación se muestra el Ordenamiento por Selección en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
Java&lt;br /&gt;
void selecccion(int[] a) {&lt;br /&gt;
        for (int i = 0; i &amp;lt; a.length - 1; i++)&lt;br /&gt;
        {&lt;br /&gt;
                int min = i;&lt;br /&gt;
                for (int j = i + 1; j &amp;lt; a.length; j++)&lt;br /&gt;
                {&lt;br /&gt;
                        if (a[j] &amp;lt; a[min])&lt;br /&gt;
                        {&lt;br /&gt;
                                min = j;&lt;br /&gt;
                        }&lt;br /&gt;
                }&lt;br /&gt;
                if (i != min) &lt;br /&gt;
                {&lt;br /&gt;
                        int aux= a[i];&lt;br /&gt;
                        a[i] = a[min];&lt;br /&gt;
                        a[min] = aux;&lt;br /&gt;
                }&lt;br /&gt;
        }}&lt;br /&gt;
C&lt;br /&gt;
void ordsel(int * x, int n){&lt;br /&gt;
   int minimo=0,i,j;&lt;br /&gt;
   int swap;&lt;br /&gt;
   for(i=0 ; i&amp;lt;n-1 ; i++)&lt;br /&gt;
   {&lt;br /&gt;
      minimo=i;&lt;br /&gt;
      for(j=i+1 ; j&amp;lt;n ; j++)&lt;br /&gt;
         if (x[minimo] &amp;gt; x[j]) &lt;br /&gt;
            minimo=j;&lt;br /&gt;
      swap=x[minimo];&lt;br /&gt;
      x[minimo]=x[i];&lt;br /&gt;
      x[i]=swap;&lt;br /&gt;
   }}&lt;br /&gt;
Basic&lt;br /&gt;
For i = 1 To n - 1&lt;br /&gt;
   minimo = i&lt;br /&gt;
   For j = i + 1 To n&lt;br /&gt;
      If x(minimo) &amp;gt; x(j) Then&lt;br /&gt;
         minimo = j&lt;br /&gt;
      End If&lt;br /&gt;
   Next j&lt;br /&gt;
   temp = x(i)&lt;br /&gt;
   x(i) = x(minimo)&lt;br /&gt;
   x(minimo) = tempNext i&lt;br /&gt;
C++&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;#include &amp;lt;vector&amp;gt;using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 template &amp;lt;class T&amp;gt;void ordena_seleccion(vector&amp;lt;T&amp;gt;&amp;amp; v) {&lt;br /&gt;
    for (int i = 0; i &amp;lt; v.size() - 1; ++i) {&lt;br /&gt;
        int min = i;&lt;br /&gt;
        for (int c = i + 1; c &amp;lt; v.size(); ++c) {&lt;br /&gt;
            if (v[min] &amp;gt; v[c]) min = c;&lt;br /&gt;
        }&lt;br /&gt;
        T aux = v[i];&lt;br /&gt;
        v[i] = v[min];&lt;br /&gt;
        v[min] = aux;&lt;br /&gt;
    }}&lt;br /&gt;
Perl&lt;br /&gt;
sub seleccion {&lt;br /&gt;
    my $array = shift;    # Recibimos una referencia a un array&lt;br /&gt;
 &lt;br /&gt;
    my $i;    # Índice del elemento a comparar&lt;br /&gt;
    my $j;    # Índice del valor mínimo a encontrar&lt;br /&gt;
 &lt;br /&gt;
    # Para todos los elementos menos el último&lt;br /&gt;
    for ( $i = 0; $i &amp;lt; $#$array; $i++ ) {&lt;br /&gt;
 &lt;br /&gt;
        # Índice y valor del elemento a comparar&lt;br /&gt;
        my ( $m, $x ) = ( $i, $array-&amp;gt;[ $m ] );   &lt;br /&gt;
 &lt;br /&gt;
        # Buscamos el valor más pequeño de todos los demás&lt;br /&gt;
        for ( $j = $i + 1; $j &amp;lt; @$array; $j++ ) {&lt;br /&gt;
 &lt;br /&gt;
            ( $m, $x ) = ( $j, $array-&amp;gt;[ $j ] )   # Nuevo mínimo encontrado&lt;br /&gt;
                if $array-&amp;gt;[ $j ] &amp;lt; $x;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        # Hacemos el intercambio de elementos, si es necesario&lt;br /&gt;
        @$array[ $m, $i ] = @$array[ $i, $m ]  if $m != $i;&lt;br /&gt;
    }}&lt;br /&gt;
JavaScript&lt;br /&gt;
for(var i=0 ; i&amp;lt;vector.length-1 ; i++){&lt;br /&gt;
   var menor = i;&lt;br /&gt;
   for(var j=i+1 ; j&amp;lt;vector.length ; j++)&lt;br /&gt;
   {&lt;br /&gt;
      if (vector[menor] &amp;gt; vector[j]) menor = j;&lt;br /&gt;
   }&lt;br /&gt;
   var temp = vector[menor];&lt;br /&gt;
   vector[menor] = vector[i];&lt;br /&gt;
   vector[i] = temp;}&lt;br /&gt;
&lt;br /&gt;
PHP&lt;br /&gt;
function IntercambiarElementos(&amp;amp;$arreglo,$pos1,$pos2){&lt;br /&gt;
    $aux=$arreglo[$pos1];&lt;br /&gt;
    $arreglo[$pos1]=$arreglo[$pos2];&lt;br /&gt;
    $arreglo[$pos2]=$aux;}function PosicionMenorElemento($arreglo,$posinicial){&lt;br /&gt;
    $posmenor=$posinicial;&lt;br /&gt;
    for($i=$posinicial+1;$i&amp;lt;count($arreglo);$i++){&lt;br /&gt;
        if($arreglo[$i]&amp;lt;$arreglo[$posmenor]){&lt;br /&gt;
            $posmenor=$i;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return $posmenor;}function OrdenamientoPorSeleccion(&amp;amp;$arreglo){&lt;br /&gt;
    for($i=0;$i&amp;lt;count($arreglo);$i++){&lt;br /&gt;
        $posmenor=PosicionMenorElemento($arreglo,$i);&lt;br /&gt;
        if($posmenor&amp;gt;$i){&lt;br /&gt;
            IntercambiarElementos($arreglo,$i,$posmenor);&lt;br /&gt;
        }&lt;br /&gt;
    }}&lt;br /&gt;
Python&lt;br /&gt;
def seleccion(lista)&lt;br /&gt;
  n = len(lista)&lt;br /&gt;
 &lt;br /&gt;
  for i in range(0,n-1):&lt;br /&gt;
    k = i&lt;br /&gt;
    t = lista[i]&lt;br /&gt;
    for j in range(i,n):&lt;br /&gt;
      if lista[j] &amp;lt; t:&lt;br /&gt;
        k = j&lt;br /&gt;
        t = lista[j]&lt;br /&gt;
    lista[k] = lista[i]&lt;br /&gt;
    lista[i] = t&lt;br /&gt;
 &lt;br /&gt;
  return lista&lt;br /&gt;
Pascal&lt;br /&gt;
Procedure OrdSel (var Sec : TipSec; TamSec : Integer);var&lt;br /&gt;
   i, j, min, num : Integer;begin&lt;br /&gt;
   for i := 1 to TamSec-1 do&lt;br /&gt;
   begin&lt;br /&gt;
      min := i;&lt;br /&gt;
      for j := i+1 to TamSec do&lt;br /&gt;
      begin&lt;br /&gt;
         NumOpr := NumOpr + 1;&lt;br /&gt;
         if Sec[j] &amp;lt; Sec[min] then&lt;br /&gt;
            min := j;&lt;br /&gt;
      end;&lt;br /&gt;
      num := Sec[min];&lt;br /&gt;
      Sec[min] := Sec[i];&lt;br /&gt;
      Sec[i] := num;&lt;br /&gt;
   end;end;&lt;br /&gt;
Game Maker Language&lt;br /&gt;
// array de extensión nfor(i=0 ; i&amp;lt;n-1 ; i+=1){&lt;br /&gt;
   menor = i;&lt;br /&gt;
   for(j=i+1 ; j&amp;lt;n; j+=1)&lt;br /&gt;
   {&lt;br /&gt;
      if (vector[menor] &amp;gt; vector[j]) {menor = j;}&lt;br /&gt;
   }&lt;br /&gt;
   temp = vector[menor];&lt;br /&gt;
   vector[menor] = vector[i];&lt;br /&gt;
   vector[i] = temp;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Ordenamiento de burbuja]]&lt;br /&gt;
*[[Algoritmos de clasificación no supervisada]]&lt;br /&gt;
*[[Algoritmos jerárquicos]]&lt;br /&gt;
*[[Algoritmos matemáticos]]&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
 &lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979478</id>
		<title>Algoritmo de ordenamiento por selección</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979478"/>
		<updated>2011-09-30T17:26:37Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Selección|imagen=Selection-Sort-Animation1.gif&lt;br /&gt;
|tamaño=height 400&lt;br /&gt;
|concepto=Algoritmo que ubica elementos de una lista o vector, en una secuencia, dada por una relación de orden, tomando como punto de partida el menor elemento.}}&lt;br /&gt;
 &lt;br /&gt;
'''Algoritmo de ordenamiento por Selección (Selection Sort en [[inglés]]):''' Consiste en encontrar el menor de todos los elementos del arreglo o vector e intercambiarlo con el que está en la primera posición. Luego el segundo mas pequeño, y así sucesivamente hasta ordenarlo todo. Su implementación requiere O(n2) comparaciones e intercambios para ordenar una secuencia de elementos.&lt;br /&gt;
== Descripción ==&lt;br /&gt;
Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas, la operación de intercambiar  los elementos sería más costosa en este caso.&lt;br /&gt;
Su funcionamiento se puede definir de forma general como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Buscar el mínimo elemento entre una posición i y el final de la lista&lt;br /&gt;
* Intercambiar el mínimo con el elemento de la posición i&lt;br /&gt;
&lt;br /&gt;
Así, se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos indexados desde el 1:&lt;br /&gt;
&lt;br /&gt;
'''para''' i=1 '''hasta''' n-1&lt;br /&gt;
    minimo = i;&lt;br /&gt;
    '''para''' j=i+1 '''hasta''' n&lt;br /&gt;
        '''si''' lista[j] &amp;lt; lista[minimo] '''entonces'''&lt;br /&gt;
            minimo = j &lt;br /&gt;
        '''fin si'''&lt;br /&gt;
    '''fin para'''&lt;br /&gt;
    intercambiar(lista[i], lista[minimo])&lt;br /&gt;
'''fin para'''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'].&lt;br /&gt;
Se empieza por recorrer el arreglo hasta encontrar el menor elemento. En este caso el menor elemento es la primera 'a'. De manera que no ocurre ningún cambio. Luego se procede a buscar el siguiente elemento y se encuentra la segunda 'a'.&lt;br /&gt;
Esta se intercambia con el dato que está en la segunda posición, la 's', quedando el arreglo así después de dos recorridos: a = ['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e'].&lt;br /&gt;
El siguiente elemento, el tercero en orden de menor mayor es la primera 'e', la cual se intercambia con lo que está en la tercera posición, o sea, la 'o'. Le sigue la segunda 's', la cual es intercambiada con la 'r'.&lt;br /&gt;
El arreglo ahora se ve de la siguiente manera: a = ['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r'].&lt;br /&gt;
De esta manera se va buscando el elemento que debe ir en la siguiente posición hasta ordenar todo el arreglo.&lt;br /&gt;
 &lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
El ciclo externo se ejecuta n veces para una lista de n elementos, o sea que para ordenar un vector de n términos, tiene que realizar siempre el mismo número de comparaciones. &lt;br /&gt;
c(n)= (n2-n)/2&lt;br /&gt;
Cada búsqueda requiere comparar todos los elementos no clasificados, de manera que el número de comparaciones c(n) no depende del orden de los términos, si no del número de términos; por lo que este algoritmo presenta un comportamiento constante independiente del orden de los datos. Luego la complejidad es del orden n2. &lt;br /&gt;
== Estabilidad, Ventajas y Desventajas==&lt;br /&gt;
Puede que exista algo de discrepancia  en cuanto a si es o no estable este algoritmo, pero en realidad esta implementación parece ser bastante estable. Se puede verificar esto ordenando un conjunto de datos que tenga un par de ellos con la misma clave. Se vera claramente que el orden relativo entre ellos es conservado. Algunos autores no lo consideran asi, pero independientemente de esto, este algoritmo tienes entre sus ventajas:&lt;br /&gt;
Es fácil su implementación.&lt;br /&gt;
No requiere memoria      adicional.&lt;br /&gt;
Realiza pocos intercambios.&lt;br /&gt;
Tiene un rendimiento      constante, pues existe poca diferencia entre el peor y el mejor caso.&lt;br /&gt;
Como todos también tiene algunas desventajas:&lt;br /&gt;
Es lento y poco eficiente      cuando se usa en listas grandes o medianas.&lt;br /&gt;
Realiza numerosas      comparaciones.&lt;br /&gt;
== Implementación==&lt;br /&gt;
A continuación se muestra el Ordenamiento por Selección en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Ordenamiento de burbuja]]&lt;br /&gt;
*[[Algoritmos de clasificación no supervisada]]&lt;br /&gt;
*[[Algoritmos jerárquicos]]&lt;br /&gt;
*[[Algoritmos matemáticos]]&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
 &lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979517</id>
		<title>Algoritmo de ordenamiento por selección</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979517"/>
		<updated>2011-09-30T17:24:39Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Selección|imagen=Selection-Sort-Animation.gif&lt;br /&gt;
|tamaño=height 20&lt;br /&gt;
|concepto=Algoritmo que ubica elementos de una lista o vector, en una secuencia, dada por una relación de orden, tomando como punto de partida el menor elemento.}}&lt;br /&gt;
 &lt;br /&gt;
'''Algoritmo de ordenamiento por Selección (Selection Sort en [[inglés]]):''' Consiste en encontrar el menor de todos los elementos del arreglo o vector e intercambiarlo con el que está en la primera posición. Luego el segundo mas pequeño, y así sucesivamente hasta ordenarlo todo. Su implementación requiere O(n2) comparaciones e intercambios para ordenar una secuencia de elementos.&lt;br /&gt;
== Descripción ==&lt;br /&gt;
Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas, la operación de intercambiar  los elementos sería más costosa en este caso.&lt;br /&gt;
Su funcionamiento se puede definir de forma general como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Buscar el mínimo elemento entre una posición i y el final de la lista&lt;br /&gt;
* Intercambiar el mínimo con el elemento de la posición i&lt;br /&gt;
&lt;br /&gt;
Así, se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos indexados desde el 1:&lt;br /&gt;
&lt;br /&gt;
'''para''' i=1 '''hasta''' n-1&lt;br /&gt;
    minimo = i;&lt;br /&gt;
    '''para''' j=i+1 '''hasta''' n&lt;br /&gt;
        '''si''' lista[j] &amp;lt; lista[minimo] '''entonces'''&lt;br /&gt;
            minimo = j &lt;br /&gt;
        '''fin si'''&lt;br /&gt;
    '''fin para'''&lt;br /&gt;
    intercambiar(lista[i], lista[minimo])&lt;br /&gt;
'''fin para'''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'].&lt;br /&gt;
Se empieza por recorrer el arreglo hasta encontrar el menor elemento. En este caso el menor elemento es la primera 'a'. De manera que no ocurre ningún cambio. Luego se procede a buscar el siguiente elemento y se encuentra la segunda 'a'.&lt;br /&gt;
Esta se intercambia con el dato que está en la segunda posición, la 's', quedando el arreglo así después de dos recorridos: a = ['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e'].&lt;br /&gt;
El siguiente elemento, el tercero en orden de menor mayor es la primera 'e', la cual se intercambia con lo que está en la tercera posición, o sea, la 'o'. Le sigue la segunda 's', la cual es intercambiada con la 'r'.&lt;br /&gt;
El arreglo ahora se ve de la siguiente manera: a = ['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r'].&lt;br /&gt;
De esta manera se va buscando el elemento que debe ir en la siguiente posición hasta ordenar todo el arreglo.&lt;br /&gt;
 &lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
El ciclo externo se ejecuta n veces para una lista de n elementos, o sea que para ordenar un vector de n términos, tiene que realizar siempre el mismo número de comparaciones. &lt;br /&gt;
c(n)= (n2-n)/2&lt;br /&gt;
Cada búsqueda requiere comparar todos los elementos no clasificados, de manera que el número de comparaciones c(n) no depende del orden de los términos, si no del número de términos; por lo que este algoritmo presenta un comportamiento constante independiente del orden de los datos. Luego la complejidad es del orden n2. &lt;br /&gt;
== Estabilidad, Ventajas y Desventajas==&lt;br /&gt;
Puede que exista algo de discrepancia  en cuanto a si es o no estable este algoritmo, pero en realidad esta implementación parece ser bastante estable. Se puede verificar esto ordenando un conjunto de datos que tenga un par de ellos con la misma clave. Se vera claramente que el orden relativo entre ellos es conservado. Algunos autores no lo consideran asi, pero independientemente de esto, este algoritmo tienes entre sus ventajas:&lt;br /&gt;
Es fácil su implementación.&lt;br /&gt;
No requiere memoria      adicional.&lt;br /&gt;
Realiza pocos intercambios.&lt;br /&gt;
Tiene un rendimiento      constante, pues existe poca diferencia entre el peor y el mejor caso.&lt;br /&gt;
Como todos también tiene algunas desventajas:&lt;br /&gt;
Es lento y poco eficiente      cuando se usa en listas grandes o medianas.&lt;br /&gt;
Realiza numerosas      comparaciones.&lt;br /&gt;
== Implementación==&lt;br /&gt;
A continuación se muestra el Ordenamiento por Selección en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Ordenamiento de burbuja]]&lt;br /&gt;
*[[Algoritmos de clasificación no supervisada]]&lt;br /&gt;
*[[Algoritmos jerárquicos]]&lt;br /&gt;
*[[Algoritmos matemáticos]]&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
 &lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979509</id>
		<title>Algoritmo de ordenamiento por selección</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979509"/>
		<updated>2011-09-30T17:23:32Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Selección|imagen=Selection-Sort-Animation.gif&lt;br /&gt;
|tamaño=height 250&lt;br /&gt;
|concepto=Algoritmo que ubica elementos de una lista o vector, en una secuencia, dada por una relación de orden, tomando como punto de partida el menor elemento.}}&lt;br /&gt;
 &lt;br /&gt;
'''Algoritmo de ordenamiento por Selección (Selection Sort en [[inglés]]):''' Consiste en encontrar el menor de todos los elementos del arreglo o vector e intercambiarlo con el que está en la primera posición. Luego el segundo mas pequeño, y así sucesivamente hasta ordenarlo todo. Su implementación requiere O(n2) comparaciones e intercambios para ordenar una secuencia de elementos.&lt;br /&gt;
== Descripción ==&lt;br /&gt;
Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas, la operación de intercambiar  los elementos sería más costosa en este caso.&lt;br /&gt;
Su funcionamiento se puede definir de forma general como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Buscar el mínimo elemento entre una posición i y el final de la lista&lt;br /&gt;
* Intercambiar el mínimo con el elemento de la posición i&lt;br /&gt;
&lt;br /&gt;
Así, se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos indexados desde el 1:&lt;br /&gt;
&lt;br /&gt;
'''para''' i=1 '''hasta''' n-1&lt;br /&gt;
    minimo = i;&lt;br /&gt;
    '''para''' j=i+1 '''hasta''' n&lt;br /&gt;
        '''si''' lista[j] &amp;lt; lista[minimo] '''entonces'''&lt;br /&gt;
            minimo = j &lt;br /&gt;
        '''fin si'''&lt;br /&gt;
    '''fin para'''&lt;br /&gt;
    intercambiar(lista[i], lista[minimo])&lt;br /&gt;
'''fin para'''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'].&lt;br /&gt;
Se empieza por recorrer el arreglo hasta encontrar el menor elemento. En este caso el menor elemento es la primera 'a'. De manera que no ocurre ningún cambio. Luego se procede a buscar el siguiente elemento y se encuentra la segunda 'a'.&lt;br /&gt;
Esta se intercambia con el dato que está en la segunda posición, la 's', quedando el arreglo así después de dos recorridos: a = ['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e'].&lt;br /&gt;
El siguiente elemento, el tercero en orden de menor mayor es la primera 'e', la cual se intercambia con lo que está en la tercera posición, o sea, la 'o'. Le sigue la segunda 's', la cual es intercambiada con la 'r'.&lt;br /&gt;
El arreglo ahora se ve de la siguiente manera: a = ['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r'].&lt;br /&gt;
De esta manera se va buscando el elemento que debe ir en la siguiente posición hasta ordenar todo el arreglo.&lt;br /&gt;
 &lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
El ciclo externo se ejecuta n veces para una lista de n elementos, o sea que para ordenar un vector de n términos, tiene que realizar siempre el mismo número de comparaciones. &lt;br /&gt;
c(n)= (n2-n)/2&lt;br /&gt;
Cada búsqueda requiere comparar todos los elementos no clasificados, de manera que el número de comparaciones c(n) no depende del orden de los términos, si no del número de términos; por lo que este algoritmo presenta un comportamiento constante independiente del orden de los datos. Luego la complejidad es del orden n2. &lt;br /&gt;
== Estabilidad, Ventajas y Desventajas==&lt;br /&gt;
Puede que exista algo de discrepancia  en cuanto a si es o no estable este algoritmo, pero en realidad esta implementación parece ser bastante estable. Se puede verificar esto ordenando un conjunto de datos que tenga un par de ellos con la misma clave. Se vera claramente que el orden relativo entre ellos es conservado. Algunos autores no lo consideran asi, pero independientemente de esto, este algoritmo tienes entre sus ventajas:&lt;br /&gt;
Es fácil su implementación.&lt;br /&gt;
No requiere memoria      adicional.&lt;br /&gt;
Realiza pocos intercambios.&lt;br /&gt;
Tiene un rendimiento      constante, pues existe poca diferencia entre el peor y el mejor caso.&lt;br /&gt;
Como todos también tiene algunas desventajas:&lt;br /&gt;
Es lento y poco eficiente      cuando se usa en listas grandes o medianas.&lt;br /&gt;
Realiza numerosas      comparaciones.&lt;br /&gt;
== Implementación==&lt;br /&gt;
A continuación se muestra el Ordenamiento por Selección en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Ordenamiento de burbuja]]&lt;br /&gt;
*[[Algoritmos de clasificación no supervisada]]&lt;br /&gt;
*[[Algoritmos jerárquicos]]&lt;br /&gt;
*[[Algoritmos matemáticos]]&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
 &lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979492</id>
		<title>Algoritmo de ordenamiento por selección</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979492"/>
		<updated>2011-09-30T17:21:48Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Selección|imagen=Selection-Sort-Animation.gif&lt;br /&gt;
|tamaño=height 200&lt;br /&gt;
|concepto=Algoritmo que ubica elementos de una lista o vector, en una secuencia, dada por una relación de orden, tomando como punto de partida el menor elemento.}}&lt;br /&gt;
 &lt;br /&gt;
'''Algoritmo de ordenamiento por Selección (Selection Sort en [[inglés]]):''' Consiste en encontrar el menor de todos los elementos del arreglo o vector e intercambiarlo con el que está en la primera posición. Luego el segundo mas pequeño, y así sucesivamente hasta ordenarlo todo. Su implementación requiere O(n2) comparaciones e intercambios para ordenar una secuencia de elementos.&lt;br /&gt;
== Descripción ==&lt;br /&gt;
Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas, la operación de intercambiar  los elementos sería más costosa en este caso.&lt;br /&gt;
Su funcionamiento se puede definir de forma general como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Buscar el mínimo elemento entre una posición i y el final de la lista&lt;br /&gt;
* Intercambiar el mínimo con el elemento de la posición i&lt;br /&gt;
&lt;br /&gt;
Así, se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos indexados desde el 1:&lt;br /&gt;
&lt;br /&gt;
'''para''' i=1 '''hasta''' n-1&lt;br /&gt;
    minimo = i;&lt;br /&gt;
    '''para''' j=i+1 '''hasta''' n&lt;br /&gt;
        '''si''' lista[j] &amp;lt; lista[minimo] '''entonces'''&lt;br /&gt;
            minimo = j &lt;br /&gt;
        '''fin si'''&lt;br /&gt;
    '''fin para'''&lt;br /&gt;
    intercambiar(lista[i], lista[minimo])&lt;br /&gt;
'''fin para'''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'].&lt;br /&gt;
Se empieza por recorrer el arreglo hasta encontrar el menor elemento. En este caso el menor elemento es la primera 'a'. De manera que no ocurre ningún cambio. Luego se procede a buscar el siguiente elemento y se encuentra la segunda 'a'.&lt;br /&gt;
Esta se intercambia con el dato que está en la segunda posición, la 's', quedando el arreglo así después de dos recorridos: a = ['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e'].&lt;br /&gt;
El siguiente elemento, el tercero en orden de menor mayor es la primera 'e', la cual se intercambia con lo que está en la tercera posición, o sea, la 'o'. Le sigue la segunda 's', la cual es intercambiada con la 'r'.&lt;br /&gt;
El arreglo ahora se ve de la siguiente manera: a = ['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r'].&lt;br /&gt;
De esta manera se va buscando el elemento que debe ir en la siguiente posición hasta ordenar todo el arreglo.&lt;br /&gt;
 &lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
El ciclo externo se ejecuta n veces para una lista de n elementos, o sea que para ordenar un vector de n términos, tiene que realizar siempre el mismo número de comparaciones. &lt;br /&gt;
c(n)= (n2-n)/2&lt;br /&gt;
Cada búsqueda requiere comparar todos los elementos no clasificados, de manera que el número de comparaciones c(n) no depende del orden de los términos, si no del número de términos; por lo que este algoritmo presenta un comportamiento constante independiente del orden de los datos. Luego la complejidad es del orden n2. &lt;br /&gt;
== Estabilidad, Ventajas y Desventajas==&lt;br /&gt;
Puede que exista algo de discrepancia  en cuanto a si es o no estable este algoritmo, pero en realidad esta implementación parece ser bastante estable. Se puede verificar esto ordenando un conjunto de datos que tenga un par de ellos con la misma clave. Se vera claramente que el orden relativo entre ellos es conservado. Algunos autores no lo consideran asi, pero independientemente de esto, este algoritmo tienes entre sus ventajas:&lt;br /&gt;
Es fácil su implementación.&lt;br /&gt;
No requiere memoria      adicional.&lt;br /&gt;
Realiza pocos intercambios.&lt;br /&gt;
Tiene un rendimiento      constante, pues existe poca diferencia entre el peor y el mejor caso.&lt;br /&gt;
Como todos también tiene algunas desventajas:&lt;br /&gt;
Es lento y poco eficiente      cuando se usa en listas grandes o medianas.&lt;br /&gt;
Realiza numerosas      comparaciones.&lt;br /&gt;
== Implementación==&lt;br /&gt;
A continuación se muestra el Ordenamiento por Selección en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Ordenamiento de burbuja]]&lt;br /&gt;
*[[Algoritmos de clasificación no supervisada]]&lt;br /&gt;
*[[Algoritmos jerárquicos]]&lt;br /&gt;
*[[Algoritmos matemáticos]]&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
 &lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979477</id>
		<title>Algoritmo de ordenamiento por selección</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979477"/>
		<updated>2011-09-30T17:19:05Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Selección|imagen=Selection-Sort-Animation1.gif&lt;br /&gt;
|tamaño=height 200&lt;br /&gt;
|concepto=Algoritmo que ubica elementos de una lista o vector, en una secuencia, dada por una relación de orden, tomando como punto de partida el menor elemento.}}&lt;br /&gt;
 &lt;br /&gt;
'''Algoritmo de ordenamiento por Selección (Selection Sort en [[inglés]]):''' Consiste en encontrar el menor de todos los elementos del arreglo o vector e intercambiarlo con el que está en la primera posición. Luego el segundo mas pequeño, y así sucesivamente hasta ordenarlo todo. Su implementación requiere O(n2) comparaciones e intercambios para ordenar una secuencia de elementos.&lt;br /&gt;
== Descripción ==&lt;br /&gt;
Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas, la operación de intercambiar  los elementos sería más costosa en este caso.&lt;br /&gt;
Su funcionamiento se puede definir de forma general como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Buscar el mínimo elemento entre una posición i y el final de la lista&lt;br /&gt;
* Intercambiar el mínimo con el elemento de la posición i&lt;br /&gt;
&lt;br /&gt;
Así, se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos indexados desde el 1:&lt;br /&gt;
&lt;br /&gt;
'''para''' i=1 '''hasta''' n-1&lt;br /&gt;
    minimo = i;&lt;br /&gt;
    '''para''' j=i+1 '''hasta''' n&lt;br /&gt;
        '''si''' lista[j] &amp;lt; lista[minimo] '''entonces'''&lt;br /&gt;
            minimo = j &lt;br /&gt;
        '''fin si'''&lt;br /&gt;
    '''fin para'''&lt;br /&gt;
    intercambiar(lista[i], lista[minimo])&lt;br /&gt;
'''fin para'''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'].&lt;br /&gt;
Se empieza por recorrer el arreglo hasta encontrar el menor elemento. En este caso el menor elemento es la primera 'a'. De manera que no ocurre ningún cambio. Luego se procede a buscar el siguiente elemento y se encuentra la segunda 'a'.&lt;br /&gt;
Esta se intercambia con el dato que está en la segunda posición, la 's', quedando el arreglo así después de dos recorridos: a = ['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e'].&lt;br /&gt;
El siguiente elemento, el tercero en orden de menor mayor es la primera 'e', la cual se intercambia con lo que está en la tercera posición, o sea, la 'o'. Le sigue la segunda 's', la cual es intercambiada con la 'r'.&lt;br /&gt;
El arreglo ahora se ve de la siguiente manera: a = ['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r'].&lt;br /&gt;
De esta manera se va buscando el elemento que debe ir en la siguiente posición hasta ordenar todo el arreglo.&lt;br /&gt;
 &lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
El ciclo externo se ejecuta n veces para una lista de n elementos, o sea que para ordenar un vector de n términos, tiene que realizar siempre el mismo número de comparaciones. &lt;br /&gt;
c(n)= (n2-n)/2&lt;br /&gt;
Cada búsqueda requiere comparar todos los elementos no clasificados, de manera que el número de comparaciones c(n) no depende del orden de los términos, si no del número de términos; por lo que este algoritmo presenta un comportamiento constante independiente del orden de los datos. Luego la complejidad es del orden n2. &lt;br /&gt;
== Estabilidad, Ventajas y Desventajas==&lt;br /&gt;
Puede que exista algo de discrepancia  en cuanto a si es o no estable este algoritmo, pero en realidad esta implementación parece ser bastante estable. Se puede verificar esto ordenando un conjunto de datos que tenga un par de ellos con la misma clave. Se vera claramente que el orden relativo entre ellos es conservado. Algunos autores no lo consideran asi, pero independientemente de esto, este algoritmo tienes entre sus ventajas:&lt;br /&gt;
Es fácil su implementación.&lt;br /&gt;
No requiere memoria      adicional.&lt;br /&gt;
Realiza pocos intercambios.&lt;br /&gt;
Tiene un rendimiento      constante, pues existe poca diferencia entre el peor y el mejor caso.&lt;br /&gt;
Como todos también tiene algunas desventajas:&lt;br /&gt;
Es lento y poco eficiente      cuando se usa en listas grandes o medianas.&lt;br /&gt;
Realiza numerosas      comparaciones.&lt;br /&gt;
== Implementación==&lt;br /&gt;
A continuación se muestra el Ordenamiento por Selección en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Ordenamiento de burbuja]]&lt;br /&gt;
*[[Algoritmos de clasificación no supervisada]]&lt;br /&gt;
*[[Algoritmos jerárquicos]]&lt;br /&gt;
*[[Algoritmos matemáticos]]&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
 &lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979420</id>
		<title>Algoritmo de ordenamiento por selección</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979420"/>
		<updated>2011-09-30T17:07:39Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Selección|imagen=Selection-Sort-Animation1.gif|concepto=Algoritmo que ubica elementos de una lista o vector, en una secuencia, dada por una relación de orden, tomando como punto de partida el menor elemento.}}&lt;br /&gt;
 &lt;br /&gt;
'''Algoritmo de ordenamiento por Selección (Selection Sort en [[inglés]]):''' Consiste en encontrar el menor de todos los elementos del arreglo o vector e intercambiarlo con el que está en la primera posición. Luego el segundo mas pequeño, y así sucesivamente hasta ordenarlo todo. Su implementación requiere O(n2) comparaciones e intercambios para ordenar una secuencia de elementos.&lt;br /&gt;
== Descripción ==&lt;br /&gt;
Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas, la operación de intercambiar  los elementos sería más costosa en este caso.&lt;br /&gt;
Su funcionamiento se puede definir de forma general como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Buscar el mínimo elemento entre una posición i y el final de la lista&lt;br /&gt;
* Intercambiar el mínimo con el elemento de la posición i&lt;br /&gt;
&lt;br /&gt;
Así, se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos indexados desde el 1:&lt;br /&gt;
&lt;br /&gt;
'''para''' i=1 '''hasta''' n-1&lt;br /&gt;
    minimo = i;&lt;br /&gt;
    '''para''' j=i+1 '''hasta''' n&lt;br /&gt;
        '''si''' lista[j] &amp;lt; lista[minimo] '''entonces'''&lt;br /&gt;
            minimo = j &lt;br /&gt;
        '''fin si'''&lt;br /&gt;
    '''fin para'''&lt;br /&gt;
    intercambiar(lista[i], lista[minimo])&lt;br /&gt;
'''fin para'''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'].&lt;br /&gt;
Se empieza por recorrer el arreglo hasta encontrar el menor elemento. En este caso el menor elemento es la primera 'a'. De manera que no ocurre ningún cambio. Luego se procede a buscar el siguiente elemento y se encuentra la segunda 'a'.&lt;br /&gt;
Esta se intercambia con el dato que está en la segunda posición, la 's', quedando el arreglo así después de dos recorridos: a = ['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e'].&lt;br /&gt;
El siguiente elemento, el tercero en orden de menor mayor es la primera 'e', la cual se intercambia con lo que está en la tercera posición, o sea, la 'o'. Le sigue la segunda 's', la cual es intercambiada con la 'r'.&lt;br /&gt;
El arreglo ahora se ve de la siguiente manera: a = ['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r'].&lt;br /&gt;
De esta manera se va buscando el elemento que debe ir en la siguiente posición hasta ordenar todo el arreglo.&lt;br /&gt;
 &lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
El ciclo externo se ejecuta n veces para una lista de n elementos, o sea que para ordenar un vector de n términos, tiene que realizar siempre el mismo número de comparaciones. &lt;br /&gt;
c(n)= (n2-n)/2&lt;br /&gt;
Cada búsqueda requiere comparar todos los elementos no clasificados, de manera que el número de comparaciones c(n) no depende del orden de los términos, si no del número de términos; por lo que este algoritmo presenta un comportamiento constante independiente del orden de los datos. Luego la complejidad es del orden n2. &lt;br /&gt;
== Estabilidad, Ventajas y Desventajas==&lt;br /&gt;
Puede que exista algo de discrepancia  en cuanto a si es o no estable este algoritmo, pero en realidad esta implementación parece ser bastante estable. Se puede verificar esto ordenando un conjunto de datos que tenga un par de ellos con la misma clave. Se vera claramente que el orden relativo entre ellos es conservado. Algunos autores no lo consideran asi, pero independientemente de esto, este algoritmo tienes entre sus ventajas:&lt;br /&gt;
Es fácil su implementación.&lt;br /&gt;
No requiere memoria      adicional.&lt;br /&gt;
Realiza pocos intercambios.&lt;br /&gt;
Tiene un rendimiento      constante, pues existe poca diferencia entre el peor y el mejor caso.&lt;br /&gt;
Como todos también tiene algunas desventajas:&lt;br /&gt;
Es lento y poco eficiente      cuando se usa en listas grandes o medianas.&lt;br /&gt;
Realiza numerosas      comparaciones.&lt;br /&gt;
== Implementación==&lt;br /&gt;
A continuación se muestra el Ordenamiento por Selección en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Ordenamiento de burbuja]]&lt;br /&gt;
*[[Algoritmos de clasificación no supervisada]]&lt;br /&gt;
*[[Algoritmos jerárquicos]]&lt;br /&gt;
*[[Algoritmos matemáticos]]&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
 &lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979335</id>
		<title>Algoritmo de ordenamiento por selección</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979335"/>
		<updated>2011-09-30T17:04:53Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Selección|imagen=Selection-Sort-Animation.gif| 200|concepto=Algoritmo que ubica elementos de una lista o vector, en una secuencia, dada por una relación de orden, tomando como punto de partida el menor elemento.}}&lt;br /&gt;
 &lt;br /&gt;
'''Algoritmo de ordenamiento por Selección (Selection Sort en [[inglés]]):''' Consiste en encontrar el menor de todos los elementos del arreglo o vector e intercambiarlo con el que está en la primera posición. Luego el segundo mas pequeño, y así sucesivamente hasta ordenarlo todo. Su implementación requiere O(n2) comparaciones e intercambios para ordenar una secuencia de elementos.&lt;br /&gt;
== Descripción ==&lt;br /&gt;
Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas, la operación de intercambiar  los elementos sería más costosa en este caso.&lt;br /&gt;
Su funcionamiento se puede definir de forma general como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Buscar el mínimo elemento entre una posición i y el final de la lista&lt;br /&gt;
* Intercambiar el mínimo con el elemento de la posición i&lt;br /&gt;
&lt;br /&gt;
Así, se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos indexados desde el 1:&lt;br /&gt;
&lt;br /&gt;
'''para''' i=1 '''hasta''' n-1&lt;br /&gt;
    minimo = i;&lt;br /&gt;
    '''para''' j=i+1 '''hasta''' n&lt;br /&gt;
        '''si''' lista[j] &amp;lt; lista[minimo] '''entonces'''&lt;br /&gt;
            minimo = j &lt;br /&gt;
        '''fin si'''&lt;br /&gt;
    '''fin para'''&lt;br /&gt;
    intercambiar(lista[i], lista[minimo])&lt;br /&gt;
'''fin para'''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'].&lt;br /&gt;
Se empieza por recorrer el arreglo hasta encontrar el menor elemento. En este caso el menor elemento es la primera 'a'. De manera que no ocurre ningún cambio. Luego se procede a buscar el siguiente elemento y se encuentra la segunda 'a'.&lt;br /&gt;
Esta se intercambia con el dato que está en la segunda posición, la 's', quedando el arreglo así después de dos recorridos: a = ['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e'].&lt;br /&gt;
El siguiente elemento, el tercero en orden de menor mayor es la primera 'e', la cual se intercambia con lo que está en la tercera posición, o sea, la 'o'. Le sigue la segunda 's', la cual es intercambiada con la 'r'.&lt;br /&gt;
El arreglo ahora se ve de la siguiente manera: a = ['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r'].&lt;br /&gt;
De esta manera se va buscando el elemento que debe ir en la siguiente posición hasta ordenar todo el arreglo.&lt;br /&gt;
 &lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
El ciclo externo se ejecuta n veces para una lista de n elementos, o sea que para ordenar un vector de n términos, tiene que realizar siempre el mismo número de comparaciones. &lt;br /&gt;
c(n)= (n2-n)/2&lt;br /&gt;
Cada búsqueda requiere comparar todos los elementos no clasificados, de manera que el número de comparaciones c(n) no depende del orden de los términos, si no del número de términos; por lo que este algoritmo presenta un comportamiento constante independiente del orden de los datos. Luego la complejidad es del orden n2. &lt;br /&gt;
== Estabilidad, Ventajas y Desventajas==&lt;br /&gt;
Puede que exista algo de discrepancia  en cuanto a si es o no estable este algoritmo, pero en realidad esta implementación parece ser bastante estable. Se puede verificar esto ordenando un conjunto de datos que tenga un par de ellos con la misma clave. Se vera claramente que el orden relativo entre ellos es conservado. Algunos autores no lo consideran asi, pero independientemente de esto, este algoritmo tienes entre sus ventajas:&lt;br /&gt;
Es fácil su implementación.&lt;br /&gt;
No requiere memoria      adicional.&lt;br /&gt;
Realiza pocos intercambios.&lt;br /&gt;
Tiene un rendimiento      constante, pues existe poca diferencia entre el peor y el mejor caso.&lt;br /&gt;
Como todos también tiene algunas desventajas:&lt;br /&gt;
Es lento y poco eficiente      cuando se usa en listas grandes o medianas.&lt;br /&gt;
Realiza numerosas      comparaciones.&lt;br /&gt;
== Implementación==&lt;br /&gt;
A continuación se muestra el Ordenamiento por Selección en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Ordenamiento de burbuja]]&lt;br /&gt;
*[[Algoritmos de clasificación no supervisada]]&lt;br /&gt;
*[[Algoritmos jerárquicos]]&lt;br /&gt;
*[[Algoritmos matemáticos]]&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
 &lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:Selection-Sort-Animation.gif&amp;diff=979384</id>
		<title>Archivo:Selection-Sort-Animation.gif</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:Selection-Sort-Animation.gif&amp;diff=979384"/>
		<updated>2011-09-30T17:03:24Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: subió una nueva versión de «Archivo:Selection-Sort-Animation.gif»: Revertido a la versión subida el 30 sep 2011 a las 16:41&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sumario ==&lt;br /&gt;
&lt;br /&gt;
== Estado de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:Selection-Sort-Animation.gif&amp;diff=979356</id>
		<title>Archivo:Selection-Sort-Animation.gif</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:Selection-Sort-Animation.gif&amp;diff=979356"/>
		<updated>2011-09-30T17:00:34Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: subió una nueva versión de «Archivo:Selection-Sort-Animation.gif»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sumario ==&lt;br /&gt;
&lt;br /&gt;
== Estado de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979247</id>
		<title>Algoritmo de ordenamiento por selección</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979247"/>
		<updated>2011-09-30T16:47:53Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Selección|imagen=Selection-Sort-Animation.gif|heigth 200|concepto=Algoritmo que ubica elementos de una lista o vector, en una secuencia, dada por una relación de orden, tomando como punto de partida el menor elemento.}}&lt;br /&gt;
 &lt;br /&gt;
'''Algoritmo de ordenamiento por Selección (Selection Sort en [[inglés]]):''' Consiste en encontrar el menor de todos los elementos del arreglo o vector e intercambiarlo con el que está en la primera posición. Luego el segundo mas pequeño, y así sucesivamente hasta ordenarlo todo. Su implementación requiere O(n2) comparaciones e intercambios para ordenar una secuencia de elementos.&lt;br /&gt;
== Descripción ==&lt;br /&gt;
Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas, la operación de intercambiar  los elementos sería más costosa en este caso.&lt;br /&gt;
Su funcionamiento se puede definir de forma general como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Buscar el mínimo elemento entre una posición i y el final de la lista&lt;br /&gt;
* Intercambiar el mínimo con el elemento de la posición i&lt;br /&gt;
&lt;br /&gt;
Así, se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos indexados desde el 1:&lt;br /&gt;
&lt;br /&gt;
'''para''' i=1 '''hasta''' n-1&lt;br /&gt;
    minimo = i;&lt;br /&gt;
    '''para''' j=i+1 '''hasta''' n&lt;br /&gt;
        '''si''' lista[j] &amp;lt; lista[minimo] '''entonces'''&lt;br /&gt;
            minimo = j &lt;br /&gt;
        '''fin si'''&lt;br /&gt;
    '''fin para'''&lt;br /&gt;
    intercambiar(lista[i], lista[minimo])&lt;br /&gt;
'''fin para'''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'].&lt;br /&gt;
Se empieza por recorrer el arreglo hasta encontrar el menor elemento. En este caso el menor elemento es la primera 'a'. De manera que no ocurre ningún cambio. Luego se procede a buscar el siguiente elemento y se encuentra la segunda 'a'.&lt;br /&gt;
Esta se intercambia con el dato que está en la segunda posición, la 's', quedando el arreglo así después de dos recorridos: a = ['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e'].&lt;br /&gt;
El siguiente elemento, el tercero en orden de menor mayor es la primera 'e', la cual se intercambia con lo que está en la tercera posición, o sea, la 'o'. Le sigue la segunda 's', la cual es intercambiada con la 'r'.&lt;br /&gt;
El arreglo ahora se ve de la siguiente manera: a = ['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r'].&lt;br /&gt;
De esta manera se va buscando el elemento que debe ir en la siguiente posición hasta ordenar todo el arreglo.&lt;br /&gt;
 &lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
El ciclo externo se ejecuta n veces para una lista de n elementos, o sea que para ordenar un vector de n términos, tiene que realizar siempre el mismo número de comparaciones. &lt;br /&gt;
c(n)= (n2-n)/2&lt;br /&gt;
Cada búsqueda requiere comparar todos los elementos no clasificados, de manera que el número de comparaciones c(n) no depende del orden de los términos, si no del número de términos; por lo que este algoritmo presenta un comportamiento constante independiente del orden de los datos. Luego la complejidad es del orden n2. &lt;br /&gt;
== Estabilidad, Ventajas y Desventajas==&lt;br /&gt;
Puede que exista algo de discrepancia  en cuanto a si es o no estable este algoritmo, pero en realidad esta implementación parece ser bastante estable. Se puede verificar esto ordenando un conjunto de datos que tenga un par de ellos con la misma clave. Se vera claramente que el orden relativo entre ellos es conservado. Algunos autores no lo consideran asi, pero independientemente de esto, este algoritmo tienes entre sus ventajas:&lt;br /&gt;
Es fácil su implementación.&lt;br /&gt;
No requiere memoria      adicional.&lt;br /&gt;
Realiza pocos intercambios.&lt;br /&gt;
Tiene un rendimiento      constante, pues existe poca diferencia entre el peor y el mejor caso.&lt;br /&gt;
Como todos también tiene algunas desventajas:&lt;br /&gt;
Es lento y poco eficiente      cuando se usa en listas grandes o medianas.&lt;br /&gt;
Realiza numerosas      comparaciones.&lt;br /&gt;
== Implementación==&lt;br /&gt;
A continuación se muestra el Ordenamiento por Selección en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Ordenamiento de burbuja]]&lt;br /&gt;
*[[Algoritmos de clasificación no supervisada]]&lt;br /&gt;
*[[Algoritmos jerárquicos]]&lt;br /&gt;
*[[Algoritmos matemáticos]]&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
 &lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979183</id>
		<title>Algoritmo de ordenamiento por selección</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_ordenamiento_por_selecci%C3%B3n&amp;diff=979183"/>
		<updated>2011-09-30T16:41:32Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: Página creada con ' {{Definición|Nombre=Algoritmo de ordenamiento. Selección|imagen=Selection-Sort-Animation.gif|concepto=Algoritmo que ubica elementos de una lista o vector, en una secuencia, d...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{Definición|Nombre=Algoritmo de ordenamiento. Selección|imagen=Selection-Sort-Animation.gif|concepto=Algoritmo que ubica elementos de una lista o vector, en una secuencia, dada por una relación de orden, tomando como punto de partida el menor elemento.}}&lt;br /&gt;
 &lt;br /&gt;
'''Algoritmo de ordenamiento por Selección (Selection Sort en [[inglés]]):''' Consiste en encontrar el menor de todos los elementos del arreglo o vector e intercambiarlo con el que está en la primera posición. Luego el segundo mas pequeño, y así sucesivamente hasta ordenarlo todo. Su implementación requiere O(n2) comparaciones e intercambios para ordenar una secuencia de elementos.&lt;br /&gt;
== Descripción ==&lt;br /&gt;
Este algoritmo mejora ligeramente el algoritmo de la burbuja. En el caso de tener que ordenar un vector de enteros, esta mejora no es muy sustancial, pero cuando hay que ordenar un vector de estructuras más complejas, la operación de intercambiar  los elementos sería más costosa en este caso.&lt;br /&gt;
Su funcionamiento se puede definir de forma general como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Buscar el mínimo elemento entre una posición i y el final de la lista&lt;br /&gt;
* Intercambiar el mínimo con el elemento de la posición i&lt;br /&gt;
&lt;br /&gt;
Así, se puede escribir el siguiente pseudocódigo para ordenar una lista de n elementos indexados desde el 1:&lt;br /&gt;
&lt;br /&gt;
'''para''' i=1 '''hasta''' n-1&lt;br /&gt;
    minimo = i;&lt;br /&gt;
    '''para''' j=i+1 '''hasta''' n&lt;br /&gt;
        '''si''' lista[j] &amp;lt; lista[minimo] '''entonces'''&lt;br /&gt;
            minimo = j &lt;br /&gt;
        '''fin si'''&lt;br /&gt;
    '''fin para'''&lt;br /&gt;
    intercambiar(lista[i], lista[minimo])&lt;br /&gt;
'''fin para'''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
El arreglo a ordenar es a = ['a','s','o','r','t','i','n','g','e','x','a','m','p','l','e'].&lt;br /&gt;
Se empieza por recorrer el arreglo hasta encontrar el menor elemento. En este caso el menor elemento es la primera 'a'. De manera que no ocurre ningún cambio. Luego se procede a buscar el siguiente elemento y se encuentra la segunda 'a'.&lt;br /&gt;
Esta se intercambia con el dato que está en la segunda posición, la 's', quedando el arreglo así después de dos recorridos: a = ['a','a','o','r','t','i','n','g','e','x','s','m','p','l','e'].&lt;br /&gt;
El siguiente elemento, el tercero en orden de menor mayor es la primera 'e', la cual se intercambia con lo que está en la tercera posición, o sea, la 'o'. Le sigue la segunda 's', la cual es intercambiada con la 'r'.&lt;br /&gt;
El arreglo ahora se ve de la siguiente manera: a = ['a','a','e','e','t','i','n','g','o','x','s','m','p','l','r'].&lt;br /&gt;
De esta manera se va buscando el elemento que debe ir en la siguiente posición hasta ordenar todo el arreglo.&lt;br /&gt;
 &lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
El ciclo externo se ejecuta n veces para una lista de n elementos, o sea que para ordenar un vector de n términos, tiene que realizar siempre el mismo número de comparaciones. &lt;br /&gt;
c(n)= (n2-n)/2&lt;br /&gt;
Cada búsqueda requiere comparar todos los elementos no clasificados, de manera que el número de comparaciones c(n) no depende del orden de los términos, si no del número de términos; por lo que este algoritmo presenta un comportamiento constante independiente del orden de los datos. Luego la complejidad es del orden n2. &lt;br /&gt;
== Estabilidad, Ventajas y Desventajas==&lt;br /&gt;
Puede que exista algo de discrepancia  en cuanto a si es o no estable este algoritmo, pero en realidad esta implementación parece ser bastante estable. Se puede verificar esto ordenando un conjunto de datos que tenga un par de ellos con la misma clave. Se vera claramente que el orden relativo entre ellos es conservado. Algunos autores no lo consideran asi, pero independientemente de esto, este algoritmo tienes entre sus ventajas:&lt;br /&gt;
Es fácil su implementación.&lt;br /&gt;
No requiere memoria      adicional.&lt;br /&gt;
Realiza pocos intercambios.&lt;br /&gt;
Tiene un rendimiento      constante, pues existe poca diferencia entre el peor y el mejor caso.&lt;br /&gt;
Como todos también tiene algunas desventajas:&lt;br /&gt;
Es lento y poco eficiente      cuando se usa en listas grandes o medianas.&lt;br /&gt;
Realiza numerosas      comparaciones.&lt;br /&gt;
== Implementación==&lt;br /&gt;
A continuación se muestra el Ordenamiento por Selección en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Ordenamiento de burbuja]]&lt;br /&gt;
*[[Algoritmos de clasificación no supervisada]]&lt;br /&gt;
*[[Algoritmos jerárquicos]]&lt;br /&gt;
*[[Algoritmos matemáticos]]&lt;br /&gt;
 &lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
 &lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:Selection-Sort-Animation.gif&amp;diff=979103</id>
		<title>Archivo:Selection-Sort-Animation.gif</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:Selection-Sort-Animation.gif&amp;diff=979103"/>
		<updated>2011-09-30T16:41:20Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sumario ==&lt;br /&gt;
&lt;br /&gt;
== Estado de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_Ordenamiento_Shell&amp;diff=819164</id>
		<title>Algoritmo de Ordenamiento Shell</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_Ordenamiento_Shell&amp;diff=819164"/>
		<updated>2011-08-16T19:09:23Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: /* Secuencia de espacios */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Shell|imagen=Sorting_quicksort_.JPG|concepto=Algoritmo que pone elementos de una lista o un vector, en una secuencia dada por una relación de orden, siendo una generalización del ordenamiento por inserción}}'''[[Algoritmo de ordenamiento]]. Shell:''' El método se denomina así en honor de su inventor Donald Shell. Su implementación original, requiere O(n2) comparaciones e intercambios en el peor caso, aunque un cambio menor presentado en el libro de V. Pratt produce una implementación con un rendimiento de O(n log2 n) en el peor caso. Esto es mejor que las O(n2) comparaciones requeridas por algoritmos simples pero peor que el óptimo O(n log n). &lt;br /&gt;
El Shell sort es una generalización del ordenamiento por inserción, teniendo en cuenta dos observaciones:&lt;br /&gt;
El ordenamiento por inserción es eficiente si la entrada está &amp;quot;casi ordenada&amp;quot;. &lt;br /&gt;
El ordenamiento por inserción es ineficiente, en general, porque mueve los valores sólo una posición cada vez. &lt;br /&gt;
El algoritmo Shell sort mejora el ordenamiento por inserción comparando elementos separados por un espacio de varias posiciones. Esto permite que un elemento haga &amp;quot;pasos más grandes&amp;quot; hacia su posición esperada. Los pasos múltiples sobre los datos se hacen con tamaños de espacio cada vez más pequeños. El último paso del Shell sort es un simple ordenamiento por inserción, pero para entonces, ya está garantizado que los datos del vector están casi ordenados.&lt;br /&gt;
&lt;br /&gt;
== Descripción ==&lt;br /&gt;
El algoritmo Shell es una mejora de la ordenación por inserción, donde se van comparando elementos distantes, al tiempo que se los intercambian si corresponde. A medida que se aumentan los pasos, el tamaño de los saltos disminuye; por esto mismo, es útil tanto como si los datos desordenados se encuentran cercanos, o lejanos.&lt;br /&gt;
Es bastante adecuado para ordenar listas de tamaño moderado, debido a que su velocidad es aceptable y su codificación es bastante sencilla. Su velocidad depende de la secuencia de valores con los cuales trabaja, ordenándolos.El siguiente ejemplo muestra el proceso de forma gráfica:&amp;lt;br&amp;gt;&lt;br /&gt;
Considerando un valor pequeño que está inicialmente almacenado en el final del vector. Usando un ordenamiento O(n2) como el ordenamiento de burbuja o el ordenamiento por inserción, tomará aproximadamente n comparaciones e intercambios para mover este valor hacia el otro extremo del vector. El Shell sort primero mueve los valores usando tamaños de espacio gigantes, de manera que un valor pequeño se moverá bastantes posiciones hacia su posición final, con sólo unas pocas comparaciones e intercambios.&lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, considere una lista de números como [13 14 94 33 82 25 59 94 65 23 45 27 73 25 39 10]. Si comenzamos con un tamaño de paso de 8, podríamos visualizar esto dividiendo la lista de números en una tabla con 5 columnas. Esto quedaría así:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Ej1.JPG|center|Ej1.JPG]] &amp;lt;br&amp;gt;&lt;br /&gt;
Entonces ordenamos cada columna, lo que nos queda: &amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Ej2.JPG|center|Ej2.JPG]] &amp;lt;br&amp;gt;&lt;br /&gt;
Cuando lo leemos de nuevo como una única lista de números, obtenemos [ 10 14 73 25 23 13 27 94 33 39 25 59 94 65 82 45 ]. Aquí, el 10 que estaba en el extremo final, se ha movido hasta el extremo inicial. Esta lista es entonces de nuevo ordenada usando un ordenamiento con un espacio de 3 posiciones, y después un ordenamiento con un espacio de 1 posición (ordenamiento por inserción simple).&lt;br /&gt;
== Secuencia de espacios ==&lt;br /&gt;
La ''secuencia de espacios'' es una parte integral del algoritmo Shell sort. Cualquier secuencia incremental funcionaría siempre que el último elemento sea 1. El algoritmo comienza realizando un ''ordenamiento por inserción con espacio'', siendo el espacio el primer número en la secuencia de espacios. Continua para realizar un ordenamiento por inserción con espacio para cada número en la secuencia, hasta que termina con un espacio de 1. Cuando el espacio es 1, el ordenamiento por inserción con espacio es simplemente un ordenamiento por inserción ordinario, garantizando que la lista final estará ordenada.&lt;br /&gt;
La secuencia de espacios que fue originalmente sugerida por Donald Shell debía comenzar con N / 2 y dividir por la mitad el número hasta alcanzar 1. Aunque esta secuencia proporciona mejoras de rendimiento significativas sobre los algoritmos cuadráticos como el ordenamiento por inserción, se puede cambiar ligeramente para disminuir más el tiempo necesario medio y el del peor caso.&lt;br /&gt;
Quizás la propiedad más crucial del Shell sort es que los elementos permanecen k-ordenados incluso mientras el espacio disminuye. Se dice que un vector dividido en k subvectores esta k-ordenado si cada uno de esos subvectores esta ordenado en caso de considerarlo aislado. Por ejemplo, si una lista fue 5-ordenada y después 3-ordenada, la lista está ahora no sólo 3-ordenada, sino tanto 5-ordenada como 3-ordenada. Si esto no fuera cierto, el algoritmo desharía el trabajo que había hecho en iteraciones previas, y no conseguiría un tiempo de ejecución tan bajo.&lt;br /&gt;
&lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
Aunque es fácil desarrollar un sentido intuitivo de cómo funciona este algoritmo, es muy difícil analizar su tiempo de ejecución. Dependiendo de la elección de la secuencia de espacios, Shell sort tiene un tiempo de ejecución en el peor caso de O(n2) (usando los incrementos de Shell que comienzan con 1/2 del tamaño del vector y se dividen por 2 cada vez), O(n3 / 2) (usando los incrementos de Hibbard de 2k − 1), O(n4 / 3) (usando los incrementos de Sedgewick de 9(4i) − 9(2i) + 1, o 4i + 1 + 3(2i) + 1), o O(nlog2n), y posiblemente mejores tiempos de ejecución no comprobados. La existencia de una implementación O(nlogn) en el peor caso del Shell sort permanece como una pregunta por resolver.&lt;br /&gt;
== Implementación==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el Ordenamiento Shell en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
*C &amp;lt;br&amp;gt;&lt;br /&gt;
//Ordenamiento por método Shell&amp;lt;br&amp;gt;&lt;br /&gt;
public static void shellSort(int[] a) { &amp;lt;br&amp;gt;&lt;br /&gt;
for ( int increment = a.length / 2; &amp;lt;br&amp;gt;&lt;br /&gt;
increment &amp;gt; 0; &amp;lt;br&amp;gt;&lt;br /&gt;
increment = (increment == 2 ? 1 : (int) Math.round(increment / 2.2))) {  &amp;lt;br&amp;gt;&lt;br /&gt;
for (int i = increment; i &amp;lt;&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
for (int j = i; j &amp;gt;= increment &amp;amp;&amp;amp; a[j - increment] &amp;gt; a[j]; j -= increment) { &amp;lt;br&amp;gt;&lt;br /&gt;
int temp = a[j]; &amp;lt;br&amp;gt;&lt;br /&gt;
a[j] = a[j - increment]; &amp;lt;br&amp;gt;&lt;br /&gt;
a[j - increment] = temp; &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
*PHP&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//Ordenamiento por Shell &amp;lt;br&amp;gt;&lt;br /&gt;
01 &amp;lt;?php  &amp;lt;br&amp;gt;&lt;br /&gt;
02   function ordenamientoShell($A,$n)  &amp;lt;br&amp;gt;&lt;br /&gt;
03     { &amp;lt;br&amp;gt;&lt;br /&gt;
04         for($inc = 1 ; $inc&amp;lt;$n;$inc=$inc*3+1);  &amp;lt;br&amp;gt;&lt;br /&gt;
05       while ($inc &amp;gt; 0)  &amp;lt;br&amp;gt;&lt;br /&gt;
06       { &amp;lt;br&amp;gt;&lt;br /&gt;
07           for ($i=$inc; $i &amp;lt; $n; $i++) &amp;lt;br&amp;gt;&lt;br /&gt;
08           { &amp;lt;br&amp;gt;&lt;br /&gt;
09                 $j = $i; &amp;lt;br&amp;gt;&lt;br /&gt;
10                 $temp = $A[$i]; &amp;lt;br&amp;gt;&lt;br /&gt;
11                 while (($j &amp;gt;= $inc) &amp;amp;&amp;amp; ($A[$j-$inc] &amp;gt; $temp)) &amp;lt;br&amp;gt;&lt;br /&gt;
12                 { &amp;lt;br&amp;gt;&lt;br /&gt;
13                     $A[$j] = $A[$j - $inc]; &amp;lt;br&amp;gt;&lt;br /&gt;
14                     $j = $j - $inc; &amp;lt;br&amp;gt;&lt;br /&gt;
15                 } &amp;lt;br&amp;gt;&lt;br /&gt;
16                 $A[$j] = $temp; &amp;lt;br&amp;gt;&lt;br /&gt;
17           } &amp;lt;br&amp;gt;&lt;br /&gt;
18           $inc/= 2; &amp;lt;br&amp;gt;&lt;br /&gt;
19       } &amp;lt;br&amp;gt;&lt;br /&gt;
20           return $A; &amp;lt;br&amp;gt;&lt;br /&gt;
21     } &amp;lt;br&amp;gt;&lt;br /&gt;
22     function main()&amp;lt;br&amp;gt;&lt;br /&gt;
23     { &amp;lt;br&amp;gt;&lt;br /&gt;
24         $VectorA=array(5,4,3,2,1); &amp;lt;br&amp;gt;&lt;br /&gt;
25         $VectorB=ordenamientoShell($VectorA,sizeof($VectorA)); &amp;lt;br&amp;gt;&lt;br /&gt;
26         for($i=0;$i&amp;lt;sizeof($VectorB);$i++) &amp;lt;br&amp;gt;&lt;br /&gt;
27             echo $VectorB[$i].&amp;quot;\n&amp;quot;; &amp;lt;br&amp;gt;&lt;br /&gt;
28     } &amp;lt;br&amp;gt;&lt;br /&gt;
29     main();&amp;lt;br&amp;gt;&lt;br /&gt;
30 ?&amp;gt; &lt;br /&gt;
*Python&lt;br /&gt;
1.	#Algoritmo de ordenamiento Shell  &amp;lt;br&amp;gt;&lt;br /&gt;
2.	 &amp;lt;br&amp;gt;&lt;br /&gt;
3.	def shellsort (lista) :  &amp;lt;br&amp;gt;&lt;br /&gt;
4.	  &amp;quot;&amp;quot;&amp;quot;Ordena la lista por metodo Shell, o ShellSort&amp;quot;&amp;quot;&amp;quot;  &amp;lt;br&amp;gt;&lt;br /&gt;
5.	  incremento=len(lista)/2  &amp;lt;br&amp;gt;&lt;br /&gt;
6.	  while (incremento&amp;gt;0) :  &amp;lt;br&amp;gt;&lt;br /&gt;
7.	    for i in range(incremento,len(lista)) :  &amp;lt;br&amp;gt;&lt;br /&gt;
8.	      j=i  &amp;lt;br&amp;gt;&lt;br /&gt;
9.	      temporal=lista[i]  &amp;lt;br&amp;gt;&lt;br /&gt;
10.	      while ( (j&amp;gt;=incremento) and (lista[j-incremento]&amp;gt;temporal) ) :  &amp;lt;br&amp;gt;&lt;br /&gt;
11.	        lista[j]=lista[j-incremento]  &amp;lt;br&amp;gt;&lt;br /&gt;
12.	        j=j-incremento  &amp;lt;br&amp;gt;&lt;br /&gt;
13.	      lista[j]=temporal  &amp;lt;br&amp;gt;&lt;br /&gt;
14.	    if (incremento==2) : incremento=1  &amp;lt;br&amp;gt;&lt;br /&gt;
15.	    else : incremento=int(incremento/2.2)  &amp;lt;br&amp;gt;&lt;br /&gt;
16.	  return lista  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Ordenamiento de burbuja]]&lt;br /&gt;
&lt;br /&gt;
== Fuentes ==&lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
&lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_Ordenamiento_Shell&amp;diff=819154</id>
		<title>Algoritmo de Ordenamiento Shell</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_Ordenamiento_Shell&amp;diff=819154"/>
		<updated>2011-08-16T19:06:38Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: /* Vease también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Shell|imagen=Sorting_quicksort_.JPG|concepto=Algoritmo que pone elementos de una lista o un vector, en una secuencia dada por una relación de orden, siendo una generalización del ordenamiento por inserción}}'''[[Algoritmo de ordenamiento]]. Shell:''' El método se denomina así en honor de su inventor Donald Shell. Su implementación original, requiere O(n2) comparaciones e intercambios en el peor caso, aunque un cambio menor presentado en el libro de V. Pratt produce una implementación con un rendimiento de O(n log2 n) en el peor caso. Esto es mejor que las O(n2) comparaciones requeridas por algoritmos simples pero peor que el óptimo O(n log n). &lt;br /&gt;
El Shell sort es una generalización del ordenamiento por inserción, teniendo en cuenta dos observaciones:&lt;br /&gt;
El ordenamiento por inserción es eficiente si la entrada está &amp;quot;casi ordenada&amp;quot;. &lt;br /&gt;
El ordenamiento por inserción es ineficiente, en general, porque mueve los valores sólo una posición cada vez. &lt;br /&gt;
El algoritmo Shell sort mejora el ordenamiento por inserción comparando elementos separados por un espacio de varias posiciones. Esto permite que un elemento haga &amp;quot;pasos más grandes&amp;quot; hacia su posición esperada. Los pasos múltiples sobre los datos se hacen con tamaños de espacio cada vez más pequeños. El último paso del Shell sort es un simple ordenamiento por inserción, pero para entonces, ya está garantizado que los datos del vector están casi ordenados.&lt;br /&gt;
&lt;br /&gt;
== Descripción ==&lt;br /&gt;
El algoritmo Shell es una mejora de la ordenación por inserción, donde se van comparando elementos distantes, al tiempo que se los intercambian si corresponde. A medida que se aumentan los pasos, el tamaño de los saltos disminuye; por esto mismo, es útil tanto como si los datos desordenados se encuentran cercanos, o lejanos.&lt;br /&gt;
Es bastante adecuado para ordenar listas de tamaño moderado, debido a que su velocidad es aceptable y su codificación es bastante sencilla. Su velocidad depende de la secuencia de valores con los cuales trabaja, ordenándolos.El siguiente ejemplo muestra el proceso de forma gráfica:&amp;lt;br&amp;gt;&lt;br /&gt;
Considerando un valor pequeño que está inicialmente almacenado en el final del vector. Usando un ordenamiento O(n2) como el ordenamiento de burbuja o el ordenamiento por inserción, tomará aproximadamente n comparaciones e intercambios para mover este valor hacia el otro extremo del vector. El Shell sort primero mueve los valores usando tamaños de espacio gigantes, de manera que un valor pequeño se moverá bastantes posiciones hacia su posición final, con sólo unas pocas comparaciones e intercambios.&lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, considere una lista de números como [13 14 94 33 82 25 59 94 65 23 45 27 73 25 39 10]. Si comenzamos con un tamaño de paso de 8, podríamos visualizar esto dividiendo la lista de números en una tabla con 5 columnas. Esto quedaría así:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Ej1.JPG|center|Ej1.JPG]] &amp;lt;br&amp;gt;&lt;br /&gt;
Entonces ordenamos cada columna, lo que nos queda: &amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Ej2.JPG|center|Ej2.JPG]] &amp;lt;br&amp;gt;&lt;br /&gt;
Cuando lo leemos de nuevo como una única lista de números, obtenemos [ 10 14 73 25 23 13 27 94 33 39 25 59 94 65 82 45 ]. Aquí, el 10 que estaba en el extremo final, se ha movido hasta el extremo inicial. Esta lista es entonces de nuevo ordenada usando un ordenamiento con un espacio de 3 posiciones, y después un ordenamiento con un espacio de 1 posición (ordenamiento por inserción simple).&lt;br /&gt;
== Secuencia de espacios ==&lt;br /&gt;
La secuencia de espacios es una parte integral del algoritmo Shell sort. Cualquier secuencia incremental funcionaría siempre que el último elemento sea 1. El algoritmo comienza realizando un ordenamiento por inserción con espacio, siendo el espacio el primer número en la secuencia de espacios. Continua para realizar un ordenamiento por inserción con espacio para cada número en la secuencia, hasta que termina con un espacio de 1. Cuando el espacio es 1, el ordenamiento por inserción con espacio es simplemente un ordenamiento por inserción ordinario, garantizando que la lista final estará ordenada.&lt;br /&gt;
La secuencia de espacios que fue originalmente sugerida por Donald Shell debía comenzar con N / 2 y dividir por la mitad el número hasta alcanzar 1. Aunque esta secuencia proporciona mejoras de rendimiento significativas sobre los algoritmos cuadráticos como el ordenamiento por inserción, se puede cambiar ligeramente para disminuir más el tiempo necesario medio y el del peor caso.&lt;br /&gt;
Quizás la propiedad más crucial del Shell sort es que los elementos permanecen k-ordenados incluso mientras el espacio disminuye. Se dice que un vector dividido en k subvectores esta k-ordenado si cada uno de esos subvectores esta ordenado en caso de considerarlo aislado. Por ejemplo, si una lista fue 5-ordenada y después 3-ordenada, la lista está ahora no sólo 3-ordenada, sino tanto 5-ordenada como 3-ordenada. Si esto no fuera cierto, el algoritmo desharía el trabajo que había hecho en iteraciones previas, y no conseguiría un tiempo de ejecución tan bajo.&lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
Aunque es fácil desarrollar un sentido intuitivo de cómo funciona este algoritmo, es muy difícil analizar su tiempo de ejecución. Dependiendo de la elección de la secuencia de espacios, Shell sort tiene un tiempo de ejecución en el peor caso de O(n2) (usando los incrementos de Shell que comienzan con 1/2 del tamaño del vector y se dividen por 2 cada vez), O(n3 / 2) (usando los incrementos de Hibbard de 2k − 1), O(n4 / 3) (usando los incrementos de Sedgewick de 9(4i) − 9(2i) + 1, o 4i + 1 + 3(2i) + 1), o O(nlog2n), y posiblemente mejores tiempos de ejecución no comprobados. La existencia de una implementación O(nlogn) en el peor caso del Shell sort permanece como una pregunta por resolver.&lt;br /&gt;
== Implementación==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el Ordenamiento Shell en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
*C &amp;lt;br&amp;gt;&lt;br /&gt;
//Ordenamiento por método Shell&amp;lt;br&amp;gt;&lt;br /&gt;
public static void shellSort(int[] a) { &amp;lt;br&amp;gt;&lt;br /&gt;
for ( int increment = a.length / 2; &amp;lt;br&amp;gt;&lt;br /&gt;
increment &amp;gt; 0; &amp;lt;br&amp;gt;&lt;br /&gt;
increment = (increment == 2 ? 1 : (int) Math.round(increment / 2.2))) {  &amp;lt;br&amp;gt;&lt;br /&gt;
for (int i = increment; i &amp;lt;&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
for (int j = i; j &amp;gt;= increment &amp;amp;&amp;amp; a[j - increment] &amp;gt; a[j]; j -= increment) { &amp;lt;br&amp;gt;&lt;br /&gt;
int temp = a[j]; &amp;lt;br&amp;gt;&lt;br /&gt;
a[j] = a[j - increment]; &amp;lt;br&amp;gt;&lt;br /&gt;
a[j - increment] = temp; &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
*PHP&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//Ordenamiento por Shell &amp;lt;br&amp;gt;&lt;br /&gt;
01 &amp;lt;?php  &amp;lt;br&amp;gt;&lt;br /&gt;
02   function ordenamientoShell($A,$n)  &amp;lt;br&amp;gt;&lt;br /&gt;
03     { &amp;lt;br&amp;gt;&lt;br /&gt;
04         for($inc = 1 ; $inc&amp;lt;$n;$inc=$inc*3+1);  &amp;lt;br&amp;gt;&lt;br /&gt;
05       while ($inc &amp;gt; 0)  &amp;lt;br&amp;gt;&lt;br /&gt;
06       { &amp;lt;br&amp;gt;&lt;br /&gt;
07           for ($i=$inc; $i &amp;lt; $n; $i++) &amp;lt;br&amp;gt;&lt;br /&gt;
08           { &amp;lt;br&amp;gt;&lt;br /&gt;
09                 $j = $i; &amp;lt;br&amp;gt;&lt;br /&gt;
10                 $temp = $A[$i]; &amp;lt;br&amp;gt;&lt;br /&gt;
11                 while (($j &amp;gt;= $inc) &amp;amp;&amp;amp; ($A[$j-$inc] &amp;gt; $temp)) &amp;lt;br&amp;gt;&lt;br /&gt;
12                 { &amp;lt;br&amp;gt;&lt;br /&gt;
13                     $A[$j] = $A[$j - $inc]; &amp;lt;br&amp;gt;&lt;br /&gt;
14                     $j = $j - $inc; &amp;lt;br&amp;gt;&lt;br /&gt;
15                 } &amp;lt;br&amp;gt;&lt;br /&gt;
16                 $A[$j] = $temp; &amp;lt;br&amp;gt;&lt;br /&gt;
17           } &amp;lt;br&amp;gt;&lt;br /&gt;
18           $inc/= 2; &amp;lt;br&amp;gt;&lt;br /&gt;
19       } &amp;lt;br&amp;gt;&lt;br /&gt;
20           return $A; &amp;lt;br&amp;gt;&lt;br /&gt;
21     } &amp;lt;br&amp;gt;&lt;br /&gt;
22     function main()&amp;lt;br&amp;gt;&lt;br /&gt;
23     { &amp;lt;br&amp;gt;&lt;br /&gt;
24         $VectorA=array(5,4,3,2,1); &amp;lt;br&amp;gt;&lt;br /&gt;
25         $VectorB=ordenamientoShell($VectorA,sizeof($VectorA)); &amp;lt;br&amp;gt;&lt;br /&gt;
26         for($i=0;$i&amp;lt;sizeof($VectorB);$i++) &amp;lt;br&amp;gt;&lt;br /&gt;
27             echo $VectorB[$i].&amp;quot;\n&amp;quot;; &amp;lt;br&amp;gt;&lt;br /&gt;
28     } &amp;lt;br&amp;gt;&lt;br /&gt;
29     main();&amp;lt;br&amp;gt;&lt;br /&gt;
30 ?&amp;gt; &lt;br /&gt;
*Python&lt;br /&gt;
1.	#Algoritmo de ordenamiento Shell  &amp;lt;br&amp;gt;&lt;br /&gt;
2.	 &amp;lt;br&amp;gt;&lt;br /&gt;
3.	def shellsort (lista) :  &amp;lt;br&amp;gt;&lt;br /&gt;
4.	  &amp;quot;&amp;quot;&amp;quot;Ordena la lista por metodo Shell, o ShellSort&amp;quot;&amp;quot;&amp;quot;  &amp;lt;br&amp;gt;&lt;br /&gt;
5.	  incremento=len(lista)/2  &amp;lt;br&amp;gt;&lt;br /&gt;
6.	  while (incremento&amp;gt;0) :  &amp;lt;br&amp;gt;&lt;br /&gt;
7.	    for i in range(incremento,len(lista)) :  &amp;lt;br&amp;gt;&lt;br /&gt;
8.	      j=i  &amp;lt;br&amp;gt;&lt;br /&gt;
9.	      temporal=lista[i]  &amp;lt;br&amp;gt;&lt;br /&gt;
10.	      while ( (j&amp;gt;=incremento) and (lista[j-incremento]&amp;gt;temporal) ) :  &amp;lt;br&amp;gt;&lt;br /&gt;
11.	        lista[j]=lista[j-incremento]  &amp;lt;br&amp;gt;&lt;br /&gt;
12.	        j=j-incremento  &amp;lt;br&amp;gt;&lt;br /&gt;
13.	      lista[j]=temporal  &amp;lt;br&amp;gt;&lt;br /&gt;
14.	    if (incremento==2) : incremento=1  &amp;lt;br&amp;gt;&lt;br /&gt;
15.	    else : incremento=int(incremento/2.2)  &amp;lt;br&amp;gt;&lt;br /&gt;
16.	  return lista  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Ordenamiento de burbuja]]&lt;br /&gt;
&lt;br /&gt;
== Fuentes ==&lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
&lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_Ordenamiento_Shell&amp;diff=819148</id>
		<title>Algoritmo de Ordenamiento Shell</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_Ordenamiento_Shell&amp;diff=819148"/>
		<updated>2011-08-16T19:05:12Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: /* Vease también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Shell|imagen=Sorting_quicksort_.JPG|concepto=Algoritmo que pone elementos de una lista o un vector, en una secuencia dada por una relación de orden, siendo una generalización del ordenamiento por inserción}}'''[[Algoritmo de ordenamiento]]. Shell:''' El método se denomina así en honor de su inventor Donald Shell. Su implementación original, requiere O(n2) comparaciones e intercambios en el peor caso, aunque un cambio menor presentado en el libro de V. Pratt produce una implementación con un rendimiento de O(n log2 n) en el peor caso. Esto es mejor que las O(n2) comparaciones requeridas por algoritmos simples pero peor que el óptimo O(n log n). &lt;br /&gt;
El Shell sort es una generalización del ordenamiento por inserción, teniendo en cuenta dos observaciones:&lt;br /&gt;
El ordenamiento por inserción es eficiente si la entrada está &amp;quot;casi ordenada&amp;quot;. &lt;br /&gt;
El ordenamiento por inserción es ineficiente, en general, porque mueve los valores sólo una posición cada vez. &lt;br /&gt;
El algoritmo Shell sort mejora el ordenamiento por inserción comparando elementos separados por un espacio de varias posiciones. Esto permite que un elemento haga &amp;quot;pasos más grandes&amp;quot; hacia su posición esperada. Los pasos múltiples sobre los datos se hacen con tamaños de espacio cada vez más pequeños. El último paso del Shell sort es un simple ordenamiento por inserción, pero para entonces, ya está garantizado que los datos del vector están casi ordenados.&lt;br /&gt;
&lt;br /&gt;
== Descripción ==&lt;br /&gt;
El algoritmo Shell es una mejora de la ordenación por inserción, donde se van comparando elementos distantes, al tiempo que se los intercambian si corresponde. A medida que se aumentan los pasos, el tamaño de los saltos disminuye; por esto mismo, es útil tanto como si los datos desordenados se encuentran cercanos, o lejanos.&lt;br /&gt;
Es bastante adecuado para ordenar listas de tamaño moderado, debido a que su velocidad es aceptable y su codificación es bastante sencilla. Su velocidad depende de la secuencia de valores con los cuales trabaja, ordenándolos.El siguiente ejemplo muestra el proceso de forma gráfica:&amp;lt;br&amp;gt;&lt;br /&gt;
Considerando un valor pequeño que está inicialmente almacenado en el final del vector. Usando un ordenamiento O(n2) como el ordenamiento de burbuja o el ordenamiento por inserción, tomará aproximadamente n comparaciones e intercambios para mover este valor hacia el otro extremo del vector. El Shell sort primero mueve los valores usando tamaños de espacio gigantes, de manera que un valor pequeño se moverá bastantes posiciones hacia su posición final, con sólo unas pocas comparaciones e intercambios.&lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, considere una lista de números como [13 14 94 33 82 25 59 94 65 23 45 27 73 25 39 10]. Si comenzamos con un tamaño de paso de 8, podríamos visualizar esto dividiendo la lista de números en una tabla con 5 columnas. Esto quedaría así:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Ej1.JPG|center|Ej1.JPG]] &amp;lt;br&amp;gt;&lt;br /&gt;
Entonces ordenamos cada columna, lo que nos queda: &amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Ej2.JPG|center|Ej2.JPG]] &amp;lt;br&amp;gt;&lt;br /&gt;
Cuando lo leemos de nuevo como una única lista de números, obtenemos [ 10 14 73 25 23 13 27 94 33 39 25 59 94 65 82 45 ]. Aquí, el 10 que estaba en el extremo final, se ha movido hasta el extremo inicial. Esta lista es entonces de nuevo ordenada usando un ordenamiento con un espacio de 3 posiciones, y después un ordenamiento con un espacio de 1 posición (ordenamiento por inserción simple).&lt;br /&gt;
== Secuencia de espacios ==&lt;br /&gt;
La secuencia de espacios es una parte integral del algoritmo Shell sort. Cualquier secuencia incremental funcionaría siempre que el último elemento sea 1. El algoritmo comienza realizando un ordenamiento por inserción con espacio, siendo el espacio el primer número en la secuencia de espacios. Continua para realizar un ordenamiento por inserción con espacio para cada número en la secuencia, hasta que termina con un espacio de 1. Cuando el espacio es 1, el ordenamiento por inserción con espacio es simplemente un ordenamiento por inserción ordinario, garantizando que la lista final estará ordenada.&lt;br /&gt;
La secuencia de espacios que fue originalmente sugerida por Donald Shell debía comenzar con N / 2 y dividir por la mitad el número hasta alcanzar 1. Aunque esta secuencia proporciona mejoras de rendimiento significativas sobre los algoritmos cuadráticos como el ordenamiento por inserción, se puede cambiar ligeramente para disminuir más el tiempo necesario medio y el del peor caso.&lt;br /&gt;
Quizás la propiedad más crucial del Shell sort es que los elementos permanecen k-ordenados incluso mientras el espacio disminuye. Se dice que un vector dividido en k subvectores esta k-ordenado si cada uno de esos subvectores esta ordenado en caso de considerarlo aislado. Por ejemplo, si una lista fue 5-ordenada y después 3-ordenada, la lista está ahora no sólo 3-ordenada, sino tanto 5-ordenada como 3-ordenada. Si esto no fuera cierto, el algoritmo desharía el trabajo que había hecho en iteraciones previas, y no conseguiría un tiempo de ejecución tan bajo.&lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
Aunque es fácil desarrollar un sentido intuitivo de cómo funciona este algoritmo, es muy difícil analizar su tiempo de ejecución. Dependiendo de la elección de la secuencia de espacios, Shell sort tiene un tiempo de ejecución en el peor caso de O(n2) (usando los incrementos de Shell que comienzan con 1/2 del tamaño del vector y se dividen por 2 cada vez), O(n3 / 2) (usando los incrementos de Hibbard de 2k − 1), O(n4 / 3) (usando los incrementos de Sedgewick de 9(4i) − 9(2i) + 1, o 4i + 1 + 3(2i) + 1), o O(nlog2n), y posiblemente mejores tiempos de ejecución no comprobados. La existencia de una implementación O(nlogn) en el peor caso del Shell sort permanece como una pregunta por resolver.&lt;br /&gt;
== Implementación==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el Ordenamiento Shell en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
*C &amp;lt;br&amp;gt;&lt;br /&gt;
//Ordenamiento por método Shell&amp;lt;br&amp;gt;&lt;br /&gt;
public static void shellSort(int[] a) { &amp;lt;br&amp;gt;&lt;br /&gt;
for ( int increment = a.length / 2; &amp;lt;br&amp;gt;&lt;br /&gt;
increment &amp;gt; 0; &amp;lt;br&amp;gt;&lt;br /&gt;
increment = (increment == 2 ? 1 : (int) Math.round(increment / 2.2))) {  &amp;lt;br&amp;gt;&lt;br /&gt;
for (int i = increment; i &amp;lt;&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
for (int j = i; j &amp;gt;= increment &amp;amp;&amp;amp; a[j - increment] &amp;gt; a[j]; j -= increment) { &amp;lt;br&amp;gt;&lt;br /&gt;
int temp = a[j]; &amp;lt;br&amp;gt;&lt;br /&gt;
a[j] = a[j - increment]; &amp;lt;br&amp;gt;&lt;br /&gt;
a[j - increment] = temp; &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
*PHP&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//Ordenamiento por Shell &amp;lt;br&amp;gt;&lt;br /&gt;
01 &amp;lt;?php  &amp;lt;br&amp;gt;&lt;br /&gt;
02   function ordenamientoShell($A,$n)  &amp;lt;br&amp;gt;&lt;br /&gt;
03     { &amp;lt;br&amp;gt;&lt;br /&gt;
04         for($inc = 1 ; $inc&amp;lt;$n;$inc=$inc*3+1);  &amp;lt;br&amp;gt;&lt;br /&gt;
05       while ($inc &amp;gt; 0)  &amp;lt;br&amp;gt;&lt;br /&gt;
06       { &amp;lt;br&amp;gt;&lt;br /&gt;
07           for ($i=$inc; $i &amp;lt; $n; $i++) &amp;lt;br&amp;gt;&lt;br /&gt;
08           { &amp;lt;br&amp;gt;&lt;br /&gt;
09                 $j = $i; &amp;lt;br&amp;gt;&lt;br /&gt;
10                 $temp = $A[$i]; &amp;lt;br&amp;gt;&lt;br /&gt;
11                 while (($j &amp;gt;= $inc) &amp;amp;&amp;amp; ($A[$j-$inc] &amp;gt; $temp)) &amp;lt;br&amp;gt;&lt;br /&gt;
12                 { &amp;lt;br&amp;gt;&lt;br /&gt;
13                     $A[$j] = $A[$j - $inc]; &amp;lt;br&amp;gt;&lt;br /&gt;
14                     $j = $j - $inc; &amp;lt;br&amp;gt;&lt;br /&gt;
15                 } &amp;lt;br&amp;gt;&lt;br /&gt;
16                 $A[$j] = $temp; &amp;lt;br&amp;gt;&lt;br /&gt;
17           } &amp;lt;br&amp;gt;&lt;br /&gt;
18           $inc/= 2; &amp;lt;br&amp;gt;&lt;br /&gt;
19       } &amp;lt;br&amp;gt;&lt;br /&gt;
20           return $A; &amp;lt;br&amp;gt;&lt;br /&gt;
21     } &amp;lt;br&amp;gt;&lt;br /&gt;
22     function main()&amp;lt;br&amp;gt;&lt;br /&gt;
23     { &amp;lt;br&amp;gt;&lt;br /&gt;
24         $VectorA=array(5,4,3,2,1); &amp;lt;br&amp;gt;&lt;br /&gt;
25         $VectorB=ordenamientoShell($VectorA,sizeof($VectorA)); &amp;lt;br&amp;gt;&lt;br /&gt;
26         for($i=0;$i&amp;lt;sizeof($VectorB);$i++) &amp;lt;br&amp;gt;&lt;br /&gt;
27             echo $VectorB[$i].&amp;quot;\n&amp;quot;; &amp;lt;br&amp;gt;&lt;br /&gt;
28     } &amp;lt;br&amp;gt;&lt;br /&gt;
29     main();&amp;lt;br&amp;gt;&lt;br /&gt;
30 ?&amp;gt; &lt;br /&gt;
*Python&lt;br /&gt;
1.	#Algoritmo de ordenamiento Shell  &amp;lt;br&amp;gt;&lt;br /&gt;
2.	 &amp;lt;br&amp;gt;&lt;br /&gt;
3.	def shellsort (lista) :  &amp;lt;br&amp;gt;&lt;br /&gt;
4.	  &amp;quot;&amp;quot;&amp;quot;Ordena la lista por metodo Shell, o ShellSort&amp;quot;&amp;quot;&amp;quot;  &amp;lt;br&amp;gt;&lt;br /&gt;
5.	  incremento=len(lista)/2  &amp;lt;br&amp;gt;&lt;br /&gt;
6.	  while (incremento&amp;gt;0) :  &amp;lt;br&amp;gt;&lt;br /&gt;
7.	    for i in range(incremento,len(lista)) :  &amp;lt;br&amp;gt;&lt;br /&gt;
8.	      j=i  &amp;lt;br&amp;gt;&lt;br /&gt;
9.	      temporal=lista[i]  &amp;lt;br&amp;gt;&lt;br /&gt;
10.	      while ( (j&amp;gt;=incremento) and (lista[j-incremento]&amp;gt;temporal) ) :  &amp;lt;br&amp;gt;&lt;br /&gt;
11.	        lista[j]=lista[j-incremento]  &amp;lt;br&amp;gt;&lt;br /&gt;
12.	        j=j-incremento  &amp;lt;br&amp;gt;&lt;br /&gt;
13.	      lista[j]=temporal  &amp;lt;br&amp;gt;&lt;br /&gt;
14.	    if (incremento==2) : incremento=1  &amp;lt;br&amp;gt;&lt;br /&gt;
15.	    else : incremento=int(incremento/2.2)  &amp;lt;br&amp;gt;&lt;br /&gt;
16.	  return lista  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Ordenamiento de Burbuja]]&lt;br /&gt;
&lt;br /&gt;
== Fuentes ==&lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
&lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_Ordenamiento_Shell&amp;diff=819146</id>
		<title>Algoritmo de Ordenamiento Shell</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_Ordenamiento_Shell&amp;diff=819146"/>
		<updated>2011-08-16T19:04:10Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: /* Vease también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Shell|imagen=Sorting_quicksort_.JPG|concepto=Algoritmo que pone elementos de una lista o un vector, en una secuencia dada por una relación de orden, siendo una generalización del ordenamiento por inserción}}'''[[Algoritmo de ordenamiento]]. Shell:''' El método se denomina así en honor de su inventor Donald Shell. Su implementación original, requiere O(n2) comparaciones e intercambios en el peor caso, aunque un cambio menor presentado en el libro de V. Pratt produce una implementación con un rendimiento de O(n log2 n) en el peor caso. Esto es mejor que las O(n2) comparaciones requeridas por algoritmos simples pero peor que el óptimo O(n log n). &lt;br /&gt;
El Shell sort es una generalización del ordenamiento por inserción, teniendo en cuenta dos observaciones:&lt;br /&gt;
El ordenamiento por inserción es eficiente si la entrada está &amp;quot;casi ordenada&amp;quot;. &lt;br /&gt;
El ordenamiento por inserción es ineficiente, en general, porque mueve los valores sólo una posición cada vez. &lt;br /&gt;
El algoritmo Shell sort mejora el ordenamiento por inserción comparando elementos separados por un espacio de varias posiciones. Esto permite que un elemento haga &amp;quot;pasos más grandes&amp;quot; hacia su posición esperada. Los pasos múltiples sobre los datos se hacen con tamaños de espacio cada vez más pequeños. El último paso del Shell sort es un simple ordenamiento por inserción, pero para entonces, ya está garantizado que los datos del vector están casi ordenados.&lt;br /&gt;
&lt;br /&gt;
== Descripción ==&lt;br /&gt;
El algoritmo Shell es una mejora de la ordenación por inserción, donde se van comparando elementos distantes, al tiempo que se los intercambian si corresponde. A medida que se aumentan los pasos, el tamaño de los saltos disminuye; por esto mismo, es útil tanto como si los datos desordenados se encuentran cercanos, o lejanos.&lt;br /&gt;
Es bastante adecuado para ordenar listas de tamaño moderado, debido a que su velocidad es aceptable y su codificación es bastante sencilla. Su velocidad depende de la secuencia de valores con los cuales trabaja, ordenándolos.El siguiente ejemplo muestra el proceso de forma gráfica:&amp;lt;br&amp;gt;&lt;br /&gt;
Considerando un valor pequeño que está inicialmente almacenado en el final del vector. Usando un ordenamiento O(n2) como el ordenamiento de burbuja o el ordenamiento por inserción, tomará aproximadamente n comparaciones e intercambios para mover este valor hacia el otro extremo del vector. El Shell sort primero mueve los valores usando tamaños de espacio gigantes, de manera que un valor pequeño se moverá bastantes posiciones hacia su posición final, con sólo unas pocas comparaciones e intercambios.&lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, considere una lista de números como [13 14 94 33 82 25 59 94 65 23 45 27 73 25 39 10]. Si comenzamos con un tamaño de paso de 8, podríamos visualizar esto dividiendo la lista de números en una tabla con 5 columnas. Esto quedaría así:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Ej1.JPG|center|Ej1.JPG]] &amp;lt;br&amp;gt;&lt;br /&gt;
Entonces ordenamos cada columna, lo que nos queda: &amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Ej2.JPG|center|Ej2.JPG]] &amp;lt;br&amp;gt;&lt;br /&gt;
Cuando lo leemos de nuevo como una única lista de números, obtenemos [ 10 14 73 25 23 13 27 94 33 39 25 59 94 65 82 45 ]. Aquí, el 10 que estaba en el extremo final, se ha movido hasta el extremo inicial. Esta lista es entonces de nuevo ordenada usando un ordenamiento con un espacio de 3 posiciones, y después un ordenamiento con un espacio de 1 posición (ordenamiento por inserción simple).&lt;br /&gt;
== Secuencia de espacios ==&lt;br /&gt;
La secuencia de espacios es una parte integral del algoritmo Shell sort. Cualquier secuencia incremental funcionaría siempre que el último elemento sea 1. El algoritmo comienza realizando un ordenamiento por inserción con espacio, siendo el espacio el primer número en la secuencia de espacios. Continua para realizar un ordenamiento por inserción con espacio para cada número en la secuencia, hasta que termina con un espacio de 1. Cuando el espacio es 1, el ordenamiento por inserción con espacio es simplemente un ordenamiento por inserción ordinario, garantizando que la lista final estará ordenada.&lt;br /&gt;
La secuencia de espacios que fue originalmente sugerida por Donald Shell debía comenzar con N / 2 y dividir por la mitad el número hasta alcanzar 1. Aunque esta secuencia proporciona mejoras de rendimiento significativas sobre los algoritmos cuadráticos como el ordenamiento por inserción, se puede cambiar ligeramente para disminuir más el tiempo necesario medio y el del peor caso.&lt;br /&gt;
Quizás la propiedad más crucial del Shell sort es que los elementos permanecen k-ordenados incluso mientras el espacio disminuye. Se dice que un vector dividido en k subvectores esta k-ordenado si cada uno de esos subvectores esta ordenado en caso de considerarlo aislado. Por ejemplo, si una lista fue 5-ordenada y después 3-ordenada, la lista está ahora no sólo 3-ordenada, sino tanto 5-ordenada como 3-ordenada. Si esto no fuera cierto, el algoritmo desharía el trabajo que había hecho en iteraciones previas, y no conseguiría un tiempo de ejecución tan bajo.&lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
Aunque es fácil desarrollar un sentido intuitivo de cómo funciona este algoritmo, es muy difícil analizar su tiempo de ejecución. Dependiendo de la elección de la secuencia de espacios, Shell sort tiene un tiempo de ejecución en el peor caso de O(n2) (usando los incrementos de Shell que comienzan con 1/2 del tamaño del vector y se dividen por 2 cada vez), O(n3 / 2) (usando los incrementos de Hibbard de 2k − 1), O(n4 / 3) (usando los incrementos de Sedgewick de 9(4i) − 9(2i) + 1, o 4i + 1 + 3(2i) + 1), o O(nlog2n), y posiblemente mejores tiempos de ejecución no comprobados. La existencia de una implementación O(nlogn) en el peor caso del Shell sort permanece como una pregunta por resolver.&lt;br /&gt;
== Implementación==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el Ordenamiento Shell en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
*C &amp;lt;br&amp;gt;&lt;br /&gt;
//Ordenamiento por método Shell&amp;lt;br&amp;gt;&lt;br /&gt;
public static void shellSort(int[] a) { &amp;lt;br&amp;gt;&lt;br /&gt;
for ( int increment = a.length / 2; &amp;lt;br&amp;gt;&lt;br /&gt;
increment &amp;gt; 0; &amp;lt;br&amp;gt;&lt;br /&gt;
increment = (increment == 2 ? 1 : (int) Math.round(increment / 2.2))) {  &amp;lt;br&amp;gt;&lt;br /&gt;
for (int i = increment; i &amp;lt;&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
for (int j = i; j &amp;gt;= increment &amp;amp;&amp;amp; a[j - increment] &amp;gt; a[j]; j -= increment) { &amp;lt;br&amp;gt;&lt;br /&gt;
int temp = a[j]; &amp;lt;br&amp;gt;&lt;br /&gt;
a[j] = a[j - increment]; &amp;lt;br&amp;gt;&lt;br /&gt;
a[j - increment] = temp; &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
*PHP&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//Ordenamiento por Shell &amp;lt;br&amp;gt;&lt;br /&gt;
01 &amp;lt;?php  &amp;lt;br&amp;gt;&lt;br /&gt;
02   function ordenamientoShell($A,$n)  &amp;lt;br&amp;gt;&lt;br /&gt;
03     { &amp;lt;br&amp;gt;&lt;br /&gt;
04         for($inc = 1 ; $inc&amp;lt;$n;$inc=$inc*3+1);  &amp;lt;br&amp;gt;&lt;br /&gt;
05       while ($inc &amp;gt; 0)  &amp;lt;br&amp;gt;&lt;br /&gt;
06       { &amp;lt;br&amp;gt;&lt;br /&gt;
07           for ($i=$inc; $i &amp;lt; $n; $i++) &amp;lt;br&amp;gt;&lt;br /&gt;
08           { &amp;lt;br&amp;gt;&lt;br /&gt;
09                 $j = $i; &amp;lt;br&amp;gt;&lt;br /&gt;
10                 $temp = $A[$i]; &amp;lt;br&amp;gt;&lt;br /&gt;
11                 while (($j &amp;gt;= $inc) &amp;amp;&amp;amp; ($A[$j-$inc] &amp;gt; $temp)) &amp;lt;br&amp;gt;&lt;br /&gt;
12                 { &amp;lt;br&amp;gt;&lt;br /&gt;
13                     $A[$j] = $A[$j - $inc]; &amp;lt;br&amp;gt;&lt;br /&gt;
14                     $j = $j - $inc; &amp;lt;br&amp;gt;&lt;br /&gt;
15                 } &amp;lt;br&amp;gt;&lt;br /&gt;
16                 $A[$j] = $temp; &amp;lt;br&amp;gt;&lt;br /&gt;
17           } &amp;lt;br&amp;gt;&lt;br /&gt;
18           $inc/= 2; &amp;lt;br&amp;gt;&lt;br /&gt;
19       } &amp;lt;br&amp;gt;&lt;br /&gt;
20           return $A; &amp;lt;br&amp;gt;&lt;br /&gt;
21     } &amp;lt;br&amp;gt;&lt;br /&gt;
22     function main()&amp;lt;br&amp;gt;&lt;br /&gt;
23     { &amp;lt;br&amp;gt;&lt;br /&gt;
24         $VectorA=array(5,4,3,2,1); &amp;lt;br&amp;gt;&lt;br /&gt;
25         $VectorB=ordenamientoShell($VectorA,sizeof($VectorA)); &amp;lt;br&amp;gt;&lt;br /&gt;
26         for($i=0;$i&amp;lt;sizeof($VectorB);$i++) &amp;lt;br&amp;gt;&lt;br /&gt;
27             echo $VectorB[$i].&amp;quot;\n&amp;quot;; &amp;lt;br&amp;gt;&lt;br /&gt;
28     } &amp;lt;br&amp;gt;&lt;br /&gt;
29     main();&amp;lt;br&amp;gt;&lt;br /&gt;
30 ?&amp;gt; &lt;br /&gt;
*Python&lt;br /&gt;
1.	#Algoritmo de ordenamiento Shell  &amp;lt;br&amp;gt;&lt;br /&gt;
2.	 &amp;lt;br&amp;gt;&lt;br /&gt;
3.	def shellsort (lista) :  &amp;lt;br&amp;gt;&lt;br /&gt;
4.	  &amp;quot;&amp;quot;&amp;quot;Ordena la lista por metodo Shell, o ShellSort&amp;quot;&amp;quot;&amp;quot;  &amp;lt;br&amp;gt;&lt;br /&gt;
5.	  incremento=len(lista)/2  &amp;lt;br&amp;gt;&lt;br /&gt;
6.	  while (incremento&amp;gt;0) :  &amp;lt;br&amp;gt;&lt;br /&gt;
7.	    for i in range(incremento,len(lista)) :  &amp;lt;br&amp;gt;&lt;br /&gt;
8.	      j=i  &amp;lt;br&amp;gt;&lt;br /&gt;
9.	      temporal=lista[i]  &amp;lt;br&amp;gt;&lt;br /&gt;
10.	      while ( (j&amp;gt;=incremento) and (lista[j-incremento]&amp;gt;temporal) ) :  &amp;lt;br&amp;gt;&lt;br /&gt;
11.	        lista[j]=lista[j-incremento]  &amp;lt;br&amp;gt;&lt;br /&gt;
12.	        j=j-incremento  &amp;lt;br&amp;gt;&lt;br /&gt;
13.	      lista[j]=temporal  &amp;lt;br&amp;gt;&lt;br /&gt;
14.	    if (incremento==2) : incremento=1  &amp;lt;br&amp;gt;&lt;br /&gt;
15.	    else : incremento=int(incremento/2.2)  &amp;lt;br&amp;gt;&lt;br /&gt;
16.	  return lista  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
*[[Algoritmo de ordenamiento]]. &lt;br /&gt;
*[[Algoritmos de ordenamiento. Burbuja]]&lt;br /&gt;
&lt;br /&gt;
== Fuentes ==&lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
&lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_Ordenamiento_Shell&amp;diff=819136</id>
		<title>Algoritmo de Ordenamiento Shell</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_Ordenamiento_Shell&amp;diff=819136"/>
		<updated>2011-08-16T19:02:24Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: /* Vease también */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Shell|imagen=Sorting_quicksort_.JPG|concepto=Algoritmo que pone elementos de una lista o un vector, en una secuencia dada por una relación de orden, siendo una generalización del ordenamiento por inserción}}'''[[Algoritmo de ordenamiento]]. Shell:''' El método se denomina así en honor de su inventor Donald Shell. Su implementación original, requiere O(n2) comparaciones e intercambios en el peor caso, aunque un cambio menor presentado en el libro de V. Pratt produce una implementación con un rendimiento de O(n log2 n) en el peor caso. Esto es mejor que las O(n2) comparaciones requeridas por algoritmos simples pero peor que el óptimo O(n log n). &lt;br /&gt;
El Shell sort es una generalización del ordenamiento por inserción, teniendo en cuenta dos observaciones:&lt;br /&gt;
El ordenamiento por inserción es eficiente si la entrada está &amp;quot;casi ordenada&amp;quot;. &lt;br /&gt;
El ordenamiento por inserción es ineficiente, en general, porque mueve los valores sólo una posición cada vez. &lt;br /&gt;
El algoritmo Shell sort mejora el ordenamiento por inserción comparando elementos separados por un espacio de varias posiciones. Esto permite que un elemento haga &amp;quot;pasos más grandes&amp;quot; hacia su posición esperada. Los pasos múltiples sobre los datos se hacen con tamaños de espacio cada vez más pequeños. El último paso del Shell sort es un simple ordenamiento por inserción, pero para entonces, ya está garantizado que los datos del vector están casi ordenados.&lt;br /&gt;
&lt;br /&gt;
== Descripción ==&lt;br /&gt;
El algoritmo Shell es una mejora de la ordenación por inserción, donde se van comparando elementos distantes, al tiempo que se los intercambian si corresponde. A medida que se aumentan los pasos, el tamaño de los saltos disminuye; por esto mismo, es útil tanto como si los datos desordenados se encuentran cercanos, o lejanos.&lt;br /&gt;
Es bastante adecuado para ordenar listas de tamaño moderado, debido a que su velocidad es aceptable y su codificación es bastante sencilla. Su velocidad depende de la secuencia de valores con los cuales trabaja, ordenándolos.El siguiente ejemplo muestra el proceso de forma gráfica:&amp;lt;br&amp;gt;&lt;br /&gt;
Considerando un valor pequeño que está inicialmente almacenado en el final del vector. Usando un ordenamiento O(n2) como el ordenamiento de burbuja o el ordenamiento por inserción, tomará aproximadamente n comparaciones e intercambios para mover este valor hacia el otro extremo del vector. El Shell sort primero mueve los valores usando tamaños de espacio gigantes, de manera que un valor pequeño se moverá bastantes posiciones hacia su posición final, con sólo unas pocas comparaciones e intercambios.&lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, considere una lista de números como [13 14 94 33 82 25 59 94 65 23 45 27 73 25 39 10]. Si comenzamos con un tamaño de paso de 8, podríamos visualizar esto dividiendo la lista de números en una tabla con 5 columnas. Esto quedaría así:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Ej1.JPG|center|Ej1.JPG]] &amp;lt;br&amp;gt;&lt;br /&gt;
Entonces ordenamos cada columna, lo que nos queda: &amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Ej2.JPG|center|Ej2.JPG]] &amp;lt;br&amp;gt;&lt;br /&gt;
Cuando lo leemos de nuevo como una única lista de números, obtenemos [ 10 14 73 25 23 13 27 94 33 39 25 59 94 65 82 45 ]. Aquí, el 10 que estaba en el extremo final, se ha movido hasta el extremo inicial. Esta lista es entonces de nuevo ordenada usando un ordenamiento con un espacio de 3 posiciones, y después un ordenamiento con un espacio de 1 posición (ordenamiento por inserción simple).&lt;br /&gt;
== Secuencia de espacios ==&lt;br /&gt;
La secuencia de espacios es una parte integral del algoritmo Shell sort. Cualquier secuencia incremental funcionaría siempre que el último elemento sea 1. El algoritmo comienza realizando un ordenamiento por inserción con espacio, siendo el espacio el primer número en la secuencia de espacios. Continua para realizar un ordenamiento por inserción con espacio para cada número en la secuencia, hasta que termina con un espacio de 1. Cuando el espacio es 1, el ordenamiento por inserción con espacio es simplemente un ordenamiento por inserción ordinario, garantizando que la lista final estará ordenada.&lt;br /&gt;
La secuencia de espacios que fue originalmente sugerida por Donald Shell debía comenzar con N / 2 y dividir por la mitad el número hasta alcanzar 1. Aunque esta secuencia proporciona mejoras de rendimiento significativas sobre los algoritmos cuadráticos como el ordenamiento por inserción, se puede cambiar ligeramente para disminuir más el tiempo necesario medio y el del peor caso.&lt;br /&gt;
Quizás la propiedad más crucial del Shell sort es que los elementos permanecen k-ordenados incluso mientras el espacio disminuye. Se dice que un vector dividido en k subvectores esta k-ordenado si cada uno de esos subvectores esta ordenado en caso de considerarlo aislado. Por ejemplo, si una lista fue 5-ordenada y después 3-ordenada, la lista está ahora no sólo 3-ordenada, sino tanto 5-ordenada como 3-ordenada. Si esto no fuera cierto, el algoritmo desharía el trabajo que había hecho en iteraciones previas, y no conseguiría un tiempo de ejecución tan bajo.&lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
Aunque es fácil desarrollar un sentido intuitivo de cómo funciona este algoritmo, es muy difícil analizar su tiempo de ejecución. Dependiendo de la elección de la secuencia de espacios, Shell sort tiene un tiempo de ejecución en el peor caso de O(n2) (usando los incrementos de Shell que comienzan con 1/2 del tamaño del vector y se dividen por 2 cada vez), O(n3 / 2) (usando los incrementos de Hibbard de 2k − 1), O(n4 / 3) (usando los incrementos de Sedgewick de 9(4i) − 9(2i) + 1, o 4i + 1 + 3(2i) + 1), o O(nlog2n), y posiblemente mejores tiempos de ejecución no comprobados. La existencia de una implementación O(nlogn) en el peor caso del Shell sort permanece como una pregunta por resolver.&lt;br /&gt;
== Implementación==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el Ordenamiento Shell en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
*C &amp;lt;br&amp;gt;&lt;br /&gt;
//Ordenamiento por método Shell&amp;lt;br&amp;gt;&lt;br /&gt;
public static void shellSort(int[] a) { &amp;lt;br&amp;gt;&lt;br /&gt;
for ( int increment = a.length / 2; &amp;lt;br&amp;gt;&lt;br /&gt;
increment &amp;gt; 0; &amp;lt;br&amp;gt;&lt;br /&gt;
increment = (increment == 2 ? 1 : (int) Math.round(increment / 2.2))) {  &amp;lt;br&amp;gt;&lt;br /&gt;
for (int i = increment; i &amp;lt;&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
for (int j = i; j &amp;gt;= increment &amp;amp;&amp;amp; a[j - increment] &amp;gt; a[j]; j -= increment) { &amp;lt;br&amp;gt;&lt;br /&gt;
int temp = a[j]; &amp;lt;br&amp;gt;&lt;br /&gt;
a[j] = a[j - increment]; &amp;lt;br&amp;gt;&lt;br /&gt;
a[j - increment] = temp; &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
*PHP&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//Ordenamiento por Shell &amp;lt;br&amp;gt;&lt;br /&gt;
01 &amp;lt;?php  &amp;lt;br&amp;gt;&lt;br /&gt;
02   function ordenamientoShell($A,$n)  &amp;lt;br&amp;gt;&lt;br /&gt;
03     { &amp;lt;br&amp;gt;&lt;br /&gt;
04         for($inc = 1 ; $inc&amp;lt;$n;$inc=$inc*3+1);  &amp;lt;br&amp;gt;&lt;br /&gt;
05       while ($inc &amp;gt; 0)  &amp;lt;br&amp;gt;&lt;br /&gt;
06       { &amp;lt;br&amp;gt;&lt;br /&gt;
07           for ($i=$inc; $i &amp;lt; $n; $i++) &amp;lt;br&amp;gt;&lt;br /&gt;
08           { &amp;lt;br&amp;gt;&lt;br /&gt;
09                 $j = $i; &amp;lt;br&amp;gt;&lt;br /&gt;
10                 $temp = $A[$i]; &amp;lt;br&amp;gt;&lt;br /&gt;
11                 while (($j &amp;gt;= $inc) &amp;amp;&amp;amp; ($A[$j-$inc] &amp;gt; $temp)) &amp;lt;br&amp;gt;&lt;br /&gt;
12                 { &amp;lt;br&amp;gt;&lt;br /&gt;
13                     $A[$j] = $A[$j - $inc]; &amp;lt;br&amp;gt;&lt;br /&gt;
14                     $j = $j - $inc; &amp;lt;br&amp;gt;&lt;br /&gt;
15                 } &amp;lt;br&amp;gt;&lt;br /&gt;
16                 $A[$j] = $temp; &amp;lt;br&amp;gt;&lt;br /&gt;
17           } &amp;lt;br&amp;gt;&lt;br /&gt;
18           $inc/= 2; &amp;lt;br&amp;gt;&lt;br /&gt;
19       } &amp;lt;br&amp;gt;&lt;br /&gt;
20           return $A; &amp;lt;br&amp;gt;&lt;br /&gt;
21     } &amp;lt;br&amp;gt;&lt;br /&gt;
22     function main()&amp;lt;br&amp;gt;&lt;br /&gt;
23     { &amp;lt;br&amp;gt;&lt;br /&gt;
24         $VectorA=array(5,4,3,2,1); &amp;lt;br&amp;gt;&lt;br /&gt;
25         $VectorB=ordenamientoShell($VectorA,sizeof($VectorA)); &amp;lt;br&amp;gt;&lt;br /&gt;
26         for($i=0;$i&amp;lt;sizeof($VectorB);$i++) &amp;lt;br&amp;gt;&lt;br /&gt;
27             echo $VectorB[$i].&amp;quot;\n&amp;quot;; &amp;lt;br&amp;gt;&lt;br /&gt;
28     } &amp;lt;br&amp;gt;&lt;br /&gt;
29     main();&amp;lt;br&amp;gt;&lt;br /&gt;
30 ?&amp;gt; &lt;br /&gt;
*Python&lt;br /&gt;
1.	#Algoritmo de ordenamiento Shell  &amp;lt;br&amp;gt;&lt;br /&gt;
2.	 &amp;lt;br&amp;gt;&lt;br /&gt;
3.	def shellsort (lista) :  &amp;lt;br&amp;gt;&lt;br /&gt;
4.	  &amp;quot;&amp;quot;&amp;quot;Ordena la lista por metodo Shell, o ShellSort&amp;quot;&amp;quot;&amp;quot;  &amp;lt;br&amp;gt;&lt;br /&gt;
5.	  incremento=len(lista)/2  &amp;lt;br&amp;gt;&lt;br /&gt;
6.	  while (incremento&amp;gt;0) :  &amp;lt;br&amp;gt;&lt;br /&gt;
7.	    for i in range(incremento,len(lista)) :  &amp;lt;br&amp;gt;&lt;br /&gt;
8.	      j=i  &amp;lt;br&amp;gt;&lt;br /&gt;
9.	      temporal=lista[i]  &amp;lt;br&amp;gt;&lt;br /&gt;
10.	      while ( (j&amp;gt;=incremento) and (lista[j-incremento]&amp;gt;temporal) ) :  &amp;lt;br&amp;gt;&lt;br /&gt;
11.	        lista[j]=lista[j-incremento]  &amp;lt;br&amp;gt;&lt;br /&gt;
12.	        j=j-incremento  &amp;lt;br&amp;gt;&lt;br /&gt;
13.	      lista[j]=temporal  &amp;lt;br&amp;gt;&lt;br /&gt;
14.	    if (incremento==2) : incremento=1  &amp;lt;br&amp;gt;&lt;br /&gt;
15.	    else : incremento=int(incremento/2.2)  &amp;lt;br&amp;gt;&lt;br /&gt;
16.	  return lista  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
*[[Algoritmos de ordenamiento]]. &lt;br /&gt;
*[[Algoritmos de ordenamiento. Burbuja]]&lt;br /&gt;
&lt;br /&gt;
== Fuentes ==&lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
&lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_Ordenamiento_Shell&amp;diff=819130</id>
		<title>Algoritmo de Ordenamiento Shell</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_Ordenamiento_Shell&amp;diff=819130"/>
		<updated>2011-08-16T19:01:26Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: /* Implementación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Shell|imagen=Sorting_quicksort_.JPG|concepto=Algoritmo que pone elementos de una lista o un vector, en una secuencia dada por una relación de orden, siendo una generalización del ordenamiento por inserción}}'''[[Algoritmo de ordenamiento]]. Shell:''' El método se denomina así en honor de su inventor Donald Shell. Su implementación original, requiere O(n2) comparaciones e intercambios en el peor caso, aunque un cambio menor presentado en el libro de V. Pratt produce una implementación con un rendimiento de O(n log2 n) en el peor caso. Esto es mejor que las O(n2) comparaciones requeridas por algoritmos simples pero peor que el óptimo O(n log n). &lt;br /&gt;
El Shell sort es una generalización del ordenamiento por inserción, teniendo en cuenta dos observaciones:&lt;br /&gt;
El ordenamiento por inserción es eficiente si la entrada está &amp;quot;casi ordenada&amp;quot;. &lt;br /&gt;
El ordenamiento por inserción es ineficiente, en general, porque mueve los valores sólo una posición cada vez. &lt;br /&gt;
El algoritmo Shell sort mejora el ordenamiento por inserción comparando elementos separados por un espacio de varias posiciones. Esto permite que un elemento haga &amp;quot;pasos más grandes&amp;quot; hacia su posición esperada. Los pasos múltiples sobre los datos se hacen con tamaños de espacio cada vez más pequeños. El último paso del Shell sort es un simple ordenamiento por inserción, pero para entonces, ya está garantizado que los datos del vector están casi ordenados.&lt;br /&gt;
&lt;br /&gt;
== Descripción ==&lt;br /&gt;
El algoritmo Shell es una mejora de la ordenación por inserción, donde se van comparando elementos distantes, al tiempo que se los intercambian si corresponde. A medida que se aumentan los pasos, el tamaño de los saltos disminuye; por esto mismo, es útil tanto como si los datos desordenados se encuentran cercanos, o lejanos.&lt;br /&gt;
Es bastante adecuado para ordenar listas de tamaño moderado, debido a que su velocidad es aceptable y su codificación es bastante sencilla. Su velocidad depende de la secuencia de valores con los cuales trabaja, ordenándolos.El siguiente ejemplo muestra el proceso de forma gráfica:&amp;lt;br&amp;gt;&lt;br /&gt;
Considerando un valor pequeño que está inicialmente almacenado en el final del vector. Usando un ordenamiento O(n2) como el ordenamiento de burbuja o el ordenamiento por inserción, tomará aproximadamente n comparaciones e intercambios para mover este valor hacia el otro extremo del vector. El Shell sort primero mueve los valores usando tamaños de espacio gigantes, de manera que un valor pequeño se moverá bastantes posiciones hacia su posición final, con sólo unas pocas comparaciones e intercambios.&lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, considere una lista de números como [13 14 94 33 82 25 59 94 65 23 45 27 73 25 39 10]. Si comenzamos con un tamaño de paso de 8, podríamos visualizar esto dividiendo la lista de números en una tabla con 5 columnas. Esto quedaría así:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Ej1.JPG|center|Ej1.JPG]] &amp;lt;br&amp;gt;&lt;br /&gt;
Entonces ordenamos cada columna, lo que nos queda: &amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Ej2.JPG|center|Ej2.JPG]] &amp;lt;br&amp;gt;&lt;br /&gt;
Cuando lo leemos de nuevo como una única lista de números, obtenemos [ 10 14 73 25 23 13 27 94 33 39 25 59 94 65 82 45 ]. Aquí, el 10 que estaba en el extremo final, se ha movido hasta el extremo inicial. Esta lista es entonces de nuevo ordenada usando un ordenamiento con un espacio de 3 posiciones, y después un ordenamiento con un espacio de 1 posición (ordenamiento por inserción simple).&lt;br /&gt;
== Secuencia de espacios ==&lt;br /&gt;
La secuencia de espacios es una parte integral del algoritmo Shell sort. Cualquier secuencia incremental funcionaría siempre que el último elemento sea 1. El algoritmo comienza realizando un ordenamiento por inserción con espacio, siendo el espacio el primer número en la secuencia de espacios. Continua para realizar un ordenamiento por inserción con espacio para cada número en la secuencia, hasta que termina con un espacio de 1. Cuando el espacio es 1, el ordenamiento por inserción con espacio es simplemente un ordenamiento por inserción ordinario, garantizando que la lista final estará ordenada.&lt;br /&gt;
La secuencia de espacios que fue originalmente sugerida por Donald Shell debía comenzar con N / 2 y dividir por la mitad el número hasta alcanzar 1. Aunque esta secuencia proporciona mejoras de rendimiento significativas sobre los algoritmos cuadráticos como el ordenamiento por inserción, se puede cambiar ligeramente para disminuir más el tiempo necesario medio y el del peor caso.&lt;br /&gt;
Quizás la propiedad más crucial del Shell sort es que los elementos permanecen k-ordenados incluso mientras el espacio disminuye. Se dice que un vector dividido en k subvectores esta k-ordenado si cada uno de esos subvectores esta ordenado en caso de considerarlo aislado. Por ejemplo, si una lista fue 5-ordenada y después 3-ordenada, la lista está ahora no sólo 3-ordenada, sino tanto 5-ordenada como 3-ordenada. Si esto no fuera cierto, el algoritmo desharía el trabajo que había hecho en iteraciones previas, y no conseguiría un tiempo de ejecución tan bajo.&lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
Aunque es fácil desarrollar un sentido intuitivo de cómo funciona este algoritmo, es muy difícil analizar su tiempo de ejecución. Dependiendo de la elección de la secuencia de espacios, Shell sort tiene un tiempo de ejecución en el peor caso de O(n2) (usando los incrementos de Shell que comienzan con 1/2 del tamaño del vector y se dividen por 2 cada vez), O(n3 / 2) (usando los incrementos de Hibbard de 2k − 1), O(n4 / 3) (usando los incrementos de Sedgewick de 9(4i) − 9(2i) + 1, o 4i + 1 + 3(2i) + 1), o O(nlog2n), y posiblemente mejores tiempos de ejecución no comprobados. La existencia de una implementación O(nlogn) en el peor caso del Shell sort permanece como una pregunta por resolver.&lt;br /&gt;
== Implementación==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el Ordenamiento Shell en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
*C &amp;lt;br&amp;gt;&lt;br /&gt;
//Ordenamiento por método Shell&amp;lt;br&amp;gt;&lt;br /&gt;
public static void shellSort(int[] a) { &amp;lt;br&amp;gt;&lt;br /&gt;
for ( int increment = a.length / 2; &amp;lt;br&amp;gt;&lt;br /&gt;
increment &amp;gt; 0; &amp;lt;br&amp;gt;&lt;br /&gt;
increment = (increment == 2 ? 1 : (int) Math.round(increment / 2.2))) {  &amp;lt;br&amp;gt;&lt;br /&gt;
for (int i = increment; i &amp;lt;&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
for (int j = i; j &amp;gt;= increment &amp;amp;&amp;amp; a[j - increment] &amp;gt; a[j]; j -= increment) { &amp;lt;br&amp;gt;&lt;br /&gt;
int temp = a[j]; &amp;lt;br&amp;gt;&lt;br /&gt;
a[j] = a[j - increment]; &amp;lt;br&amp;gt;&lt;br /&gt;
a[j - increment] = temp; &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
*PHP&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//Ordenamiento por Shell &amp;lt;br&amp;gt;&lt;br /&gt;
01 &amp;lt;?php  &amp;lt;br&amp;gt;&lt;br /&gt;
02   function ordenamientoShell($A,$n)  &amp;lt;br&amp;gt;&lt;br /&gt;
03     { &amp;lt;br&amp;gt;&lt;br /&gt;
04         for($inc = 1 ; $inc&amp;lt;$n;$inc=$inc*3+1);  &amp;lt;br&amp;gt;&lt;br /&gt;
05       while ($inc &amp;gt; 0)  &amp;lt;br&amp;gt;&lt;br /&gt;
06       { &amp;lt;br&amp;gt;&lt;br /&gt;
07           for ($i=$inc; $i &amp;lt; $n; $i++) &amp;lt;br&amp;gt;&lt;br /&gt;
08           { &amp;lt;br&amp;gt;&lt;br /&gt;
09                 $j = $i; &amp;lt;br&amp;gt;&lt;br /&gt;
10                 $temp = $A[$i]; &amp;lt;br&amp;gt;&lt;br /&gt;
11                 while (($j &amp;gt;= $inc) &amp;amp;&amp;amp; ($A[$j-$inc] &amp;gt; $temp)) &amp;lt;br&amp;gt;&lt;br /&gt;
12                 { &amp;lt;br&amp;gt;&lt;br /&gt;
13                     $A[$j] = $A[$j - $inc]; &amp;lt;br&amp;gt;&lt;br /&gt;
14                     $j = $j - $inc; &amp;lt;br&amp;gt;&lt;br /&gt;
15                 } &amp;lt;br&amp;gt;&lt;br /&gt;
16                 $A[$j] = $temp; &amp;lt;br&amp;gt;&lt;br /&gt;
17           } &amp;lt;br&amp;gt;&lt;br /&gt;
18           $inc/= 2; &amp;lt;br&amp;gt;&lt;br /&gt;
19       } &amp;lt;br&amp;gt;&lt;br /&gt;
20           return $A; &amp;lt;br&amp;gt;&lt;br /&gt;
21     } &amp;lt;br&amp;gt;&lt;br /&gt;
22     function main()&amp;lt;br&amp;gt;&lt;br /&gt;
23     { &amp;lt;br&amp;gt;&lt;br /&gt;
24         $VectorA=array(5,4,3,2,1); &amp;lt;br&amp;gt;&lt;br /&gt;
25         $VectorB=ordenamientoShell($VectorA,sizeof($VectorA)); &amp;lt;br&amp;gt;&lt;br /&gt;
26         for($i=0;$i&amp;lt;sizeof($VectorB);$i++) &amp;lt;br&amp;gt;&lt;br /&gt;
27             echo $VectorB[$i].&amp;quot;\n&amp;quot;; &amp;lt;br&amp;gt;&lt;br /&gt;
28     } &amp;lt;br&amp;gt;&lt;br /&gt;
29     main();&amp;lt;br&amp;gt;&lt;br /&gt;
30 ?&amp;gt; &lt;br /&gt;
*Python&lt;br /&gt;
1.	#Algoritmo de ordenamiento Shell  &amp;lt;br&amp;gt;&lt;br /&gt;
2.	 &amp;lt;br&amp;gt;&lt;br /&gt;
3.	def shellsort (lista) :  &amp;lt;br&amp;gt;&lt;br /&gt;
4.	  &amp;quot;&amp;quot;&amp;quot;Ordena la lista por metodo Shell, o ShellSort&amp;quot;&amp;quot;&amp;quot;  &amp;lt;br&amp;gt;&lt;br /&gt;
5.	  incremento=len(lista)/2  &amp;lt;br&amp;gt;&lt;br /&gt;
6.	  while (incremento&amp;gt;0) :  &amp;lt;br&amp;gt;&lt;br /&gt;
7.	    for i in range(incremento,len(lista)) :  &amp;lt;br&amp;gt;&lt;br /&gt;
8.	      j=i  &amp;lt;br&amp;gt;&lt;br /&gt;
9.	      temporal=lista[i]  &amp;lt;br&amp;gt;&lt;br /&gt;
10.	      while ( (j&amp;gt;=incremento) and (lista[j-incremento]&amp;gt;temporal) ) :  &amp;lt;br&amp;gt;&lt;br /&gt;
11.	        lista[j]=lista[j-incremento]  &amp;lt;br&amp;gt;&lt;br /&gt;
12.	        j=j-incremento  &amp;lt;br&amp;gt;&lt;br /&gt;
13.	      lista[j]=temporal  &amp;lt;br&amp;gt;&lt;br /&gt;
14.	    if (incremento==2) : incremento=1  &amp;lt;br&amp;gt;&lt;br /&gt;
15.	    else : incremento=int(incremento/2.2)  &amp;lt;br&amp;gt;&lt;br /&gt;
16.	  return lista  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
*Algoritmos de ordenamiento. &lt;br /&gt;
*Algoritmos de ordenamiento. Burbuja&lt;br /&gt;
== Fuentes ==&lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
&lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Algoritmo_de_Ordenamiento_Shell&amp;diff=819063</id>
		<title>Algoritmo de Ordenamiento Shell</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Algoritmo_de_Ordenamiento_Shell&amp;diff=819063"/>
		<updated>2011-08-16T18:48:10Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: Página creada con '{{Definición|Nombre=Algoritmo de ordenamiento. Shell|imagen=Sorting_quicksort_.JPG|concepto=Algoritmo que pone elementos de una lista o un vector, en una secuencia dada por una...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Shell|imagen=Sorting_quicksort_.JPG|concepto=Algoritmo que pone elementos de una lista o un vector, en una secuencia dada por una relación de orden, siendo una generalización del ordenamiento por inserción}}'''[[Algoritmo de ordenamiento]]. Shell:''' El método se denomina así en honor de su inventor Donald Shell. Su implementación original, requiere O(n2) comparaciones e intercambios en el peor caso, aunque un cambio menor presentado en el libro de V. Pratt produce una implementación con un rendimiento de O(n log2 n) en el peor caso. Esto es mejor que las O(n2) comparaciones requeridas por algoritmos simples pero peor que el óptimo O(n log n). &lt;br /&gt;
El Shell sort es una generalización del ordenamiento por inserción, teniendo en cuenta dos observaciones:&lt;br /&gt;
El ordenamiento por inserción es eficiente si la entrada está &amp;quot;casi ordenada&amp;quot;. &lt;br /&gt;
El ordenamiento por inserción es ineficiente, en general, porque mueve los valores sólo una posición cada vez. &lt;br /&gt;
El algoritmo Shell sort mejora el ordenamiento por inserción comparando elementos separados por un espacio de varias posiciones. Esto permite que un elemento haga &amp;quot;pasos más grandes&amp;quot; hacia su posición esperada. Los pasos múltiples sobre los datos se hacen con tamaños de espacio cada vez más pequeños. El último paso del Shell sort es un simple ordenamiento por inserción, pero para entonces, ya está garantizado que los datos del vector están casi ordenados.&lt;br /&gt;
&lt;br /&gt;
== Descripción ==&lt;br /&gt;
El algoritmo Shell es una mejora de la ordenación por inserción, donde se van comparando elementos distantes, al tiempo que se los intercambian si corresponde. A medida que se aumentan los pasos, el tamaño de los saltos disminuye; por esto mismo, es útil tanto como si los datos desordenados se encuentran cercanos, o lejanos.&lt;br /&gt;
Es bastante adecuado para ordenar listas de tamaño moderado, debido a que su velocidad es aceptable y su codificación es bastante sencilla. Su velocidad depende de la secuencia de valores con los cuales trabaja, ordenándolos.El siguiente ejemplo muestra el proceso de forma gráfica:&amp;lt;br&amp;gt;&lt;br /&gt;
Considerando un valor pequeño que está inicialmente almacenado en el final del vector. Usando un ordenamiento O(n2) como el ordenamiento de burbuja o el ordenamiento por inserción, tomará aproximadamente n comparaciones e intercambios para mover este valor hacia el otro extremo del vector. El Shell sort primero mueve los valores usando tamaños de espacio gigantes, de manera que un valor pequeño se moverá bastantes posiciones hacia su posición final, con sólo unas pocas comparaciones e intercambios.&lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, considere una lista de números como [13 14 94 33 82 25 59 94 65 23 45 27 73 25 39 10]. Si comenzamos con un tamaño de paso de 8, podríamos visualizar esto dividiendo la lista de números en una tabla con 5 columnas. Esto quedaría así:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Ej1.JPG|center|Ej1.JPG]] &amp;lt;br&amp;gt;&lt;br /&gt;
Entonces ordenamos cada columna, lo que nos queda: &amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Ej2.JPG|center|Ej2.JPG]] &amp;lt;br&amp;gt;&lt;br /&gt;
Cuando lo leemos de nuevo como una única lista de números, obtenemos [ 10 14 73 25 23 13 27 94 33 39 25 59 94 65 82 45 ]. Aquí, el 10 que estaba en el extremo final, se ha movido hasta el extremo inicial. Esta lista es entonces de nuevo ordenada usando un ordenamiento con un espacio de 3 posiciones, y después un ordenamiento con un espacio de 1 posición (ordenamiento por inserción simple).&lt;br /&gt;
== Secuencia de espacios ==&lt;br /&gt;
La secuencia de espacios es una parte integral del algoritmo Shell sort. Cualquier secuencia incremental funcionaría siempre que el último elemento sea 1. El algoritmo comienza realizando un ordenamiento por inserción con espacio, siendo el espacio el primer número en la secuencia de espacios. Continua para realizar un ordenamiento por inserción con espacio para cada número en la secuencia, hasta que termina con un espacio de 1. Cuando el espacio es 1, el ordenamiento por inserción con espacio es simplemente un ordenamiento por inserción ordinario, garantizando que la lista final estará ordenada.&lt;br /&gt;
La secuencia de espacios que fue originalmente sugerida por Donald Shell debía comenzar con N / 2 y dividir por la mitad el número hasta alcanzar 1. Aunque esta secuencia proporciona mejoras de rendimiento significativas sobre los algoritmos cuadráticos como el ordenamiento por inserción, se puede cambiar ligeramente para disminuir más el tiempo necesario medio y el del peor caso.&lt;br /&gt;
Quizás la propiedad más crucial del Shell sort es que los elementos permanecen k-ordenados incluso mientras el espacio disminuye. Se dice que un vector dividido en k subvectores esta k-ordenado si cada uno de esos subvectores esta ordenado en caso de considerarlo aislado. Por ejemplo, si una lista fue 5-ordenada y después 3-ordenada, la lista está ahora no sólo 3-ordenada, sino tanto 5-ordenada como 3-ordenada. Si esto no fuera cierto, el algoritmo desharía el trabajo que había hecho en iteraciones previas, y no conseguiría un tiempo de ejecución tan bajo.&lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
Aunque es fácil desarrollar un sentido intuitivo de cómo funciona este algoritmo, es muy difícil analizar su tiempo de ejecución. Dependiendo de la elección de la secuencia de espacios, Shell sort tiene un tiempo de ejecución en el peor caso de O(n2) (usando los incrementos de Shell que comienzan con 1/2 del tamaño del vector y se dividen por 2 cada vez), O(n3 / 2) (usando los incrementos de Hibbard de 2k − 1), O(n4 / 3) (usando los incrementos de Sedgewick de 9(4i) − 9(2i) + 1, o 4i + 1 + 3(2i) + 1), o O(nlog2n), y posiblemente mejores tiempos de ejecución no comprobados. La existencia de una implementación O(nlogn) en el peor caso del Shell sort permanece como una pregunta por resolver.&lt;br /&gt;
== Implementación==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el Ordenamiento Shell en algunos de los lenguajes de programación de alto nivel más usados:&lt;br /&gt;
*C &amp;lt;br&amp;gt;&lt;br /&gt;
//Ordenamiento por método Shell&lt;br /&gt;
public static void shellSort(int[] a) { &lt;br /&gt;
for ( int increment = a.length / 2;&lt;br /&gt;
increment &amp;gt; 0;&lt;br /&gt;
increment = (increment == 2 ? 1 : (int) Math.round(increment / 2.2))) { &lt;br /&gt;
for (int i = increment; i &amp;lt;&amp;gt;&lt;br /&gt;
for (int j = i; j &amp;gt;= increment &amp;amp;&amp;amp; a[j - increment] &amp;gt; a[j]; j -= increment) {&lt;br /&gt;
int temp = a[j];&lt;br /&gt;
a[j] = a[j - increment];&lt;br /&gt;
a[j - increment] = temp;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
} &amp;lt;br&amp;gt;&lt;br /&gt;
*PHP&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
//Ordenamiento por Shell&lt;br /&gt;
01 &amp;lt;?php &lt;br /&gt;
02   function ordenamientoShell($A,$n) &lt;br /&gt;
03     { &lt;br /&gt;
04         for($inc = 1 ; $inc&amp;lt;$n;$inc=$inc*3+1); &lt;br /&gt;
05       while ($inc &amp;gt; 0) &lt;br /&gt;
06       { &lt;br /&gt;
07           for ($i=$inc; $i &amp;lt; $n; $i++) &lt;br /&gt;
08           { &lt;br /&gt;
09                 $j = $i; &lt;br /&gt;
10                 $temp = $A[$i]; &lt;br /&gt;
11                 while (($j &amp;gt;= $inc) &amp;amp;&amp;amp; ($A[$j-$inc] &amp;gt; $temp)) &lt;br /&gt;
12                 { &lt;br /&gt;
13                     $A[$j] = $A[$j - $inc]; &lt;br /&gt;
14                     $j = $j - $inc; &lt;br /&gt;
15                 } &lt;br /&gt;
16                 $A[$j] = $temp; &lt;br /&gt;
17           } &lt;br /&gt;
18           $inc/= 2; &lt;br /&gt;
19       } &lt;br /&gt;
20           return $A; &lt;br /&gt;
21     } &lt;br /&gt;
22     function main() &lt;br /&gt;
23     { &lt;br /&gt;
24         $VectorA=array(5,4,3,2,1); &lt;br /&gt;
25         $VectorB=ordenamientoShell($VectorA,sizeof($VectorA)); &lt;br /&gt;
26         for($i=0;$i&amp;lt;sizeof($VectorB);$i++) &lt;br /&gt;
27             echo $VectorB[$i].&amp;quot;\n&amp;quot;; &lt;br /&gt;
28     } &lt;br /&gt;
29     main(); &lt;br /&gt;
30 ?&amp;gt; &lt;br /&gt;
*Python&lt;br /&gt;
1.	#Algoritmo de ordenamiento Shell  &lt;br /&gt;
2.	  &lt;br /&gt;
3.	def shellsort (lista) :  &lt;br /&gt;
4.	  &amp;quot;&amp;quot;&amp;quot;Ordena la lista por metodo Shell, o ShellSort&amp;quot;&amp;quot;&amp;quot;  &lt;br /&gt;
5.	  incremento=len(lista)/2  &lt;br /&gt;
6.	  while (incremento&amp;gt;0) :  &lt;br /&gt;
7.	    for i in range(incremento,len(lista)) :  &lt;br /&gt;
8.	      j=i  &lt;br /&gt;
9.	      temporal=lista[i]  &lt;br /&gt;
10.	      while ( (j&amp;gt;=incremento) and (lista[j-incremento]&amp;gt;temporal) ) :  &lt;br /&gt;
11.	        lista[j]=lista[j-incremento]  &lt;br /&gt;
12.	        j=j-incremento  &lt;br /&gt;
13.	      lista[j]=temporal  &lt;br /&gt;
14.	    if (incremento==2) : incremento=1  &lt;br /&gt;
15.	    else : incremento=int(incremento/2.2)  &lt;br /&gt;
16.	  return lista  &lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
*Algoritmos de ordenamiento. &lt;br /&gt;
*Algoritmos de ordenamiento. Burbuja&lt;br /&gt;
== Fuentes ==&lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_Shell Wikipedia]. &lt;br /&gt;
&lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:Ej2.JPG&amp;diff=819050</id>
		<title>Archivo:Ej2.JPG</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:Ej2.JPG&amp;diff=819050"/>
		<updated>2011-08-16T18:45:29Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sumario ==&lt;br /&gt;
&lt;br /&gt;
== Estado de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:Ej1.JPG&amp;diff=819044</id>
		<title>Archivo:Ej1.JPG</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:Ej1.JPG&amp;diff=819044"/>
		<updated>2011-08-16T18:43:25Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sumario ==&lt;br /&gt;
&lt;br /&gt;
== Estado de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=QuickSort&amp;diff=777385</id>
		<title>QuickSort</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=QuickSort&amp;diff=777385"/>
		<updated>2011-07-29T23:39:20Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición&lt;br /&gt;
|nombre=Ordenamiento por Quicksort&lt;br /&gt;
|imagen=Algo_Quicksort.gif&lt;br /&gt;
|tamaño=&lt;br /&gt;
|concepto=&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; '''El ordenamiento rápido,''' '''[[Quicksort|quicksort]] '''en inglés: Es un [[Algoritmo|algoritmo]] basado en la técnica de divide y vencerás, que permite, en promedio, ordenar n elementos en un tiempo proporcional a n log n.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Descripción del algoritmo  ==&lt;br /&gt;
&lt;br /&gt;
El algoritmo consta de los siguientes pasos: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
#Elegir un elemento de la lista de elementos a ordenar, al que llamaremos [[Pivote|pivote]].&lt;br /&gt;
&lt;br /&gt;
#Resituar los demás elementos de la lista a cada lado del pivote, de manera que a un lado queden todos los menores que él, y al otro los mayores. Los elementos iguales al pivote pueden ser colocados tanto a su derecha como a su izquierda, dependiendo de la [[Implementación|implementación]] deseada. En este momento, el pivote ocupa exactamente el lugar que le corresponderá en la lista ordenada.&lt;br /&gt;
&lt;br /&gt;
#La lista queda separada en dos sublistas, una formada por los elementos a la izquierda del pivote, y otra por los elementos a su derecha.&lt;br /&gt;
&lt;br /&gt;
#Repetir este proceso de forma recursiva para cada sublista mientras éstas contengan más de un elemento. Una vez terminado este proceso todos los elementos estarán ordenados.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Eficiencia del algoritmo  ==&lt;br /&gt;
&lt;br /&gt;
La [[Eficiencia del algoritmo|eficiencia del algoritmo]] depende de la posición en la que termine el pivote elegido.&amp;lt;br&amp;gt;En el mejor caso, el pivote termina en el centro de la lista, dividiéndola en dos sublistas de igual tamaño. En este caso, el orden de [[Complejidad del algoritmo|complejidad del algoritmo]] es O(n•log n).&amp;lt;br&amp;gt;En el peor caso, el pivote termina en un extremo de la lista. El orden de complejidad del algoritmo es entonces de O(n²). El peor caso dependerá de la implementación del algoritmo, aunque habitualmente ocurre en listas que se encuentran ordenadas, o casi ordenadas. Pero principalmente depende del pivote, si por ejemplo el algoritmo implementado toma como pivote siempre el primer elemento del array, y el array que le pasamos está ordenado, siempre va a generar a su izquierda un array vacío, lo que es ineficiente.&amp;lt;br&amp;gt;En el caso promedio, el orden es O(n•log n). Y no es extraño, pues, que la mayoría de [[Optimizaciones|optimizaciones]] que se aplican al algoritmo se centren en la elección del pivote.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== &amp;lt;br&amp;gt;Demostración  ==&lt;br /&gt;
&lt;br /&gt;
Suponiendo que el número total de elementos a ordenar es potencia de dos, es decir, n = 2k. De aquí podemos ver que k = log2(n), donde k es el número de divisiones que realizará el algoritmo. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; En la primera fase del algoritmo habrán n comparaciones, en la segunda fase el algoritmo creará dos sublistas aproximadamente de tamaño n/2. El número total de comparaciones de estas dos sublistas es: 2(n/2) = n. En la tercera fase el algoritmo procesará 4 sublistas más, por tanto el número total de comparaciones en esta fase es 4(n/4) = n. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; En conclusión, el número total de comparaciones que hace el algoritmo es: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; n + n + n + ..... + n = kn, donde k = log2(n), por tanto el tiempo de ejecución del algoritmo en el mejor caso es O(n.log2n)&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== &amp;lt;br&amp;gt;Optimización del algoritmo  ==&lt;br /&gt;
&lt;br /&gt;
Cabe destacar que de usarse en su versión recursiva las siguientes optimizaciones y sus desventajas no se ven vistas en el tiempo de ejecución del mismo manteniéndose, así el tiempo de ejecución planteado en un principio.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== &amp;lt;br&amp;gt;Técnicas de elección del pivote  ==&lt;br /&gt;
&lt;br /&gt;
El algoritmo básico del método Quicksort consiste en tomar cualquier elemento de la lista al cual denominaremos como pivote, dependiendo de la partición en que se elija, el algoritmo será más o menos eficiente.&amp;lt;br&amp;gt;Tomar un elemento cualquiera como pivote tiene la ventaja de no requerir ningún cálculo adicional, lo cual lo hace bastante rápido. Sin embargo, esta elección «a ciegas» siempre provoca que el algoritmo tenga un orden de O(n²) para ciertas permutaciones de los elementos en la lista.&amp;lt;br&amp;gt;Otra opción puede ser recorrer la lista para saber de antemano qué elemento ocupará la posición central de la lista, para elegirlo como pivote. Esto puede hacerse en O(n) y asegura que hasta en el peor de los casos, el algoritmo sea O(n•log n). No obstante, el cálculo adicional rebaja bastante la eficiencia del algoritmo en el caso promedio.&amp;lt;br&amp;gt;La opción a medio camino es tomar tres elementos de la lista - por ejemplo, el primero, el segundo, y el último - y compararlos, eligiendo el valor del medio como pivote.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== &amp;lt;br&amp;gt;Técnicas de reposicionamiento  ==&lt;br /&gt;
&lt;br /&gt;
Una idea preliminar para ubicar el pivote en su posición final sería contar la cantidad de elementos menores que él, y colocarlo un lugar más arriba, moviendo luego todos esos elementos menores que él a su izquierda, para que pueda aplicarse la [[Recursividad|recursividad]]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Existe, no obstante, un procedimiento mucho más efectivo. Se utilizan dos índices: i, al que llamaremos índice izquierdo, y j, al que llamaremos índice derecho. El algoritmo es el siguiente: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Recorrer la lista simultáneamente con i y j: por la izquierda con i (desde el primer elemento), y por la derecha con j (desde el último elemento).&amp;lt;br&amp;gt;Cuando lista[i] sea mayor que el pivote y lista[j] sea menor, se intercambian los elementos en esas posiciones. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Repetir esto hasta que se crucen los índices.&amp;lt;br&amp;gt;El punto en que se cruzan los índices es la posición adecuada para colocar el pivote, porque sabemos que a un lado los elementos son todos menores y al otro son todos mayores (o habrían sido intercambiados).&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== &amp;lt;br&amp;gt;Parámetros:&amp;amp;nbsp;  ==&lt;br /&gt;
&lt;br /&gt;
#Se debe llamar a la función Quicksort desde donde quiera ejecutarse&lt;br /&gt;
&lt;br /&gt;
#Ésta llamará a colocar pivote para encontrar el valor del mismo&lt;br /&gt;
&lt;br /&gt;
#Se ejecutará el algoritmo Quicksort de forma recursiva a ambos lados del pivote&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;int colocar(int *v, int b, int t)&amp;lt;br&amp;gt;{&amp;lt;br&amp;gt; int i;&amp;lt;br&amp;gt; int pivote, valor_pivote;&amp;lt;br&amp;gt; int temp;&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; pivote = b;&amp;lt;br&amp;gt; valor_pivote = v[pivote];&amp;lt;br&amp;gt; for (i=b+1; i&amp;amp;lt;=t; i++){&amp;lt;br&amp;gt; if (v[i] &amp;amp;lt; valor_pivote){&amp;lt;br&amp;gt; pivote++; &amp;lt;br&amp;gt; temp=v[i];&amp;lt;br&amp;gt; v[i]=v[pivote];&amp;lt;br&amp;gt; v[pivote]=temp;&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; }&amp;lt;br&amp;gt; }&amp;lt;br&amp;gt; temp=v[b];&amp;lt;br&amp;gt; v[b]=v[pivote];&amp;lt;br&amp;gt; v[pivote]=temp;&amp;lt;br&amp;gt; return pivote;&amp;lt;br&amp;gt;} &amp;lt;br&amp;gt; void Quicksort(int* v, int b, int t)&amp;lt;br&amp;gt;{&amp;lt;br&amp;gt; int pivote;&amp;lt;br&amp;gt; if(b &amp;amp;lt; t){&amp;lt;br&amp;gt; pivote=colocar(v, b, t);&amp;lt;br&amp;gt; Quicksort(v, b, pivote-1);&amp;lt;br&amp;gt; Quicksort(v, pivote+1, t);&amp;lt;br&amp;gt; } &amp;lt;br&amp;gt;} &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Nota: Los tres parámetros de la llamada inicial a Quicksort serán array[0], 0, numero_elementos -1, es decir, si es un array de 6 elementos array[0], 0, 5&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Implementación del Pseudocódigo  ==&lt;br /&gt;
&lt;br /&gt;
function quicksort(array)&amp;lt;br&amp;gt; var list, less, greater&amp;lt;br&amp;gt; if length(array) ≤ 1&amp;lt;br&amp;gt; return array&amp;lt;br&amp;gt; seleccionar y eliminar un valor pivote pivot en el array&amp;lt;br&amp;gt; for each x in array&amp;lt;br&amp;gt; if x &amp;amp;lt; pivot then añadir x a less&amp;lt;br&amp;gt; else añadir x a greater&amp;lt;br&amp;gt; return concadenar(quicksort(less), pivot, quicksort(greater))&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== &amp;lt;br&amp;gt;Ejemplo  ==&lt;br /&gt;
&lt;br /&gt;
En el siguiente ejemplo se marcan el pivote y los índices i y j con las letras p, i y j respectivamente. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Comenzamos con la lista completa. El elemento pivote será el 4:&amp;lt;br&amp;gt;5 - 3 - 7 - 6 - 2 - 1 - 4&amp;lt;br&amp;gt; p &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;Comparamos con el 5 por la izquierda y el 1 por la derecha.&amp;lt;br&amp;gt;5 - 3 - 7 - 6 - 2 - 1 - 4 &amp;lt;br&amp;gt;i j p &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;5 es mayor que 4 y 1 es menor. Intercambiamos:&amp;lt;br&amp;gt;1 - 3 - 7 - 6 - 2 - 5 - 4&amp;lt;br&amp;gt;i j p &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;Avanzamos por la izquierda y la derecha:&amp;lt;br&amp;gt;1 - 3 - 7 - 6 - 2 - 5 - 4&amp;lt;br&amp;gt; i j p &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;3 es menor que 4: avanzamos por la izquierda. 2 es menor que 4: nos mantenemos ahí.&amp;lt;br&amp;gt;1 - 3 - 7 - 6 - 2 - 5 - 4&amp;lt;br&amp;gt; i j p &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;7 es mayor que 4 y 2 es menor: intercambiamos.&amp;lt;br&amp;gt;1 - 3 - 2 - 6 - 7 - 5 - 4&amp;lt;br&amp;gt; i j p &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;Avanzamos por ambos lados:&amp;lt;br&amp;gt;1 - 3 - 2 - 6 - 7 - 5 - 4&amp;lt;br&amp;gt; iyj p &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;En este momento termina el ciclo principal, porque los índices se cruzaron. Ahora intercambiamos lista[i] con lista[sup] (pasos 16-18):&amp;lt;br&amp;gt;1 - 3 - 2 - 4 - 7 - 5 - 6&amp;lt;br&amp;gt; p &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;Aplicamos recursivamente a la sublista de la izquierda (índices 0 - 2). Tenemos lo siguiente:&amp;lt;br&amp;gt;1 - 3 - 2 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;1 es menor que 2: avanzamos por la izquierda. 3 es mayor: avanzamos por la derecha. Como se intercambiaron los índices termina el ciclo. Se intercambia lista[i] con lista[sup]:&amp;lt;br&amp;gt;1 - 2 - 3 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;El mismo procedimiento se aplicará a la otra sublista. Al finalizar y unir todas las sublistas queda la lista inicial ordenada en forma ascendente.&amp;lt;br&amp;gt;1 - 2 - 3 - 4 - 5 - 6 - 7&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== &amp;lt;br&amp;gt;Referencias  ==&lt;br /&gt;
&lt;br /&gt;
*[[Quick Sort|Quick Sort]]&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
*[[Ordenamiento rápido, Implementación y descripción|Ordenamiento rápido, Implementación y descripción]]&lt;br /&gt;
&lt;br /&gt;
*[[QuickSort C Code|QuickSort C Code]]&lt;br /&gt;
&lt;br /&gt;
*[[Wikipedia|Wikipedia]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:Algo_Quicksort.gif&amp;diff=777384</id>
		<title>Archivo:Algo Quicksort.gif</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:Algo_Quicksort.gif&amp;diff=777384"/>
		<updated>2011-07-29T23:38:38Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sumario ==&lt;br /&gt;
&lt;br /&gt;
== Estado de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Ordenamiento_de_burbuja&amp;diff=705399</id>
		<title>Ordenamiento de burbuja</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Ordenamiento_de_burbuja&amp;diff=705399"/>
		<updated>2011-06-30T01:24:56Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Burbuja|imagen=Sorting_quicksort_.JPG|concepto=Algoritmo que pone elementos de una lista o un vector, en una secuencia dada por una relación de orden}}'''[[Algoritmo de ordenamiento]]. Burbuja'''(Bubble Sort en inglés) es un sencillo algoritmo de ordenamiento. Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual significa que la lista está ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista los elementos durante los intercambios, como si fueran pequeñas burbujas. También es conocido como el método del intercambio directo. Dado que solo usa comparaciones para operar elementos, se lo considera un algoritmo de comparación, siendo el más sencillo de implementar.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Descripción ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
El procedimiento de la burbuja es el siguiente:&lt;br /&gt;
§         Ir comparando desde la casilla 0 número tras número hasta encontrar uno mayor, si este es realmente  el mayor de todo el vector se llevará hasta la última casilla, si no es así, será reemplazado por uno mayor que él.&lt;br /&gt;
§         Este procedimiento seguirá así hasta que haya ordenado todas las casillas del vector.&lt;br /&gt;
§         Una de las deficiencias del algoritmo es que ya cuando a ordenado parte del vector vuelve a compararlo cuando esto ya no es necesario.&lt;br /&gt;
 &lt;br /&gt;
Dado un vector a1, a2, a3, ... an &lt;br /&gt;
1) Comparar a1 con a2 e intercambiarlos si a1&amp;gt;a2 (o a12) &lt;br /&gt;
2) Seguir hasta que todo se haya comparado an-1 con an &lt;br /&gt;
3) Repetir el proceso anterior n-1 veces&amp;lt;br&amp;gt;&lt;br /&gt;
Algoritmo:                     Complejidad&lt;br /&gt;
for(i=0; i &amp;lt; n-++){               T(n2)&lt;br /&gt;
 for(j=0; j &amp;lt; n-1; j++){          T(n)&lt;br /&gt;
   if(vec[j] &amp;gt; vec[j+1]){         T(1)&lt;br /&gt;
     aux=vec[j];                  T(1)&lt;br /&gt;
     vec[j]=vec[j+1];             T(1)&lt;br /&gt;
     vec[j+1]=aux;}               T(1)&lt;br /&gt;
  } }&amp;lt;br&amp;gt;&lt;br /&gt;
El siguiente ejemplo muestra el proceso de forma gráfica:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Tabla burbuja.JPG|center|Tabla burbuja.JPG]]       &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Al algoritmo de la burbuja, para ordenar un vector de '''n''' términos, tiene que realizar siempre el mismo número de comparaciones:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b1.gif|left|b1.gif]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Esto es, el número de comparaciones '''c(n) ''' no depende del orden de los términos, si no del número de términos.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b2.gif|left|b2.gif]] &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Por lo tanto la cota ajustada asintótica del número de comparaciones pertenece al orden de '''n''' cuadrado.&lt;br /&gt;
El numero de intercambios '''i(n)''', que hay que realizar depende del orden de los términos y podemos diferencia, el caso mejor, si el vector esta previamente ordenado, y el caso peor, si el vector esta ordenado en orden inverso.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b3.gif|left|b3.gif]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Por lo que no se puede determinar una cota ajustada asintótica del número de intercambios, dado que este dependerá del orden del vector en cuestión.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rendimiento en el caso desfavorable'''&amp;lt;br&amp;gt;&lt;br /&gt;
Si pasamos al algoritmo un vector ordenado en orden inverso realizara un número de comparaciones:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b1.gif|left|b1.gif]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Como ya hemos dicho anteriormente, y tendrá que realizar un número igual de intercambios entre los términos del vector, dado que en cada comparación los términos estarán desordenados, y se realizará el intercambio.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b4.gif|left|b4.gif]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Por lo tanto en el caso más desfavorable tanto el número de comparaciones como el de intercambios coinciden:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b5.gif|left|b5.gif]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El número de comparaciones o de intercambios en el caso más desfavorable pertenece al orden de '''n''' cuadrado.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rendimiento en casos óptimos'''&amp;lt;br&amp;gt;&lt;br /&gt;
En el caso óptimo, el más favorable, es la ordenación que un vector ya ordenado, en este caso el número de comparaciones será el mismo que en cualquier otro caso:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b6.gif|left|b6.gif]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La cota inferior asintótica del número de comparaciones pertenece al orden de '''n''' cuadrado, como en los demás casos, pero en todas las comparaciones el orden es el correcto y por tanto no se realiza ningún intercambio:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b7.gif|left|b7.gif]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por lo tanto el coste de intercambios no depende de '''n''', y es constante:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b8.gif|left|b8.gif]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El ordenamiento de burbuja tiene una complejidad '''Ω(n²)''' igual que ordenamiento por selección. Cuando una lista ya está ordenada, a diferencia del ordenamiento por inserción, que pasará por la lista una vez y encontrará que no hay necesidad de intercambiar las posiciones de los elementos, el método de ordenación por burbuja está forzado a pasar por dichas comparaciones, lo que hace que su complejidad sea cuadrática en el mejor de los casos. Esto lo cataloga como el '''algoritmo más ineficiente''' que existe, aunque para muchos programadores sea el más sencillo de implementar.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Aplicación ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
A pesar de que el ordenamiento de burbuja es uno de los algoritmos más sencillos de implementar, su orden '''O(n2)''' lo hace muy ineficiente para usar en listas que tengan más que un número reducido de elementos. Incluso entre los algoritmos de ordenamiento de orden '''O(n2)''', otros procedimientos como el ordenamiento por inserción son considerados más eficientes.&lt;br /&gt;
Dada su simplicidad, el ordenamiento de burbuja es utilizado para introducir el concepto de algoritmo de ordenamiento para estudiantes de ciencias de la computación. A pesar de esto, algunos investigadores como Owen Astrachan han criticado su popularidad en la enseñanza de ciencias de la computación, llegando a recomendar su eliminación de los planes de estudio. &lt;br /&gt;
Sumado a esto, Jargon File, un libro ampliamente citado en la cultura hacker, lo denomina &amp;quot;el mal algoritmo genérico&amp;quot;, y Donald Knuth, uno de los mayores expertos en ciencias de la computación, afirma que el ordenamiento de burbuja &amp;quot;no parece tener nada para recomendar su uso, a excepción de un nombre pegajoso y el hecho de que conlleva a problemas teóricos interesantes&amp;quot;.&lt;br /&gt;
El ordenamiento de burbuja es asintóticamente equivalente, en tiempos de ejecución, con el ordenamiento por inserción en el peor de los casos, pero ambos algoritmos difieren principalmente en la cantidad de intercambios que son necesarios. Resultados experimentales como los descubiertos por Astrachan han demostrado que el ordenamiento por inserción funciona considerablemente mejor incluso con listas aleatorias. Por esta razón, muchos libros de algoritmos modernos evitan usar el ordenamiento de burbuja, reemplazándolo por el ordenamiento por inserción.&lt;br /&gt;
El ordenamiento de burbuja interactúa vagamente con el hardware de las CPU modernas. Requiere al menos el doble de escrituras que el ordenamiento por inserción, el doble de pérdidas de cache, y asintóticamente más predicción de saltos. Varios experimentos de ordenamiento de cadenas en Java hechos por Astrachan muestran que el ordenamiento de burbuja es 5 veces más lento que el ordenamiento por inserción, y 40% más lento que el ordenamiento por selección. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Implementación==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el Ordenamiento de burbuja en algunos de los lenguajes de programación más usados:&lt;br /&gt;
*C &amp;lt;br&amp;gt;&lt;br /&gt;
//Ordenamiento por método de la Burbuja&lt;br /&gt;
void ordenamientoBurbuja(int v[], int util_v) {&lt;br /&gt;
         int temp, i, j;&lt;br /&gt;
 &lt;br /&gt;
         for (i = 0; i &amp;lt; util_v -1 ; i++) {&lt;br /&gt;
                  for (j = i + 1; j &amp;lt; util_v ; j++) {&lt;br /&gt;
                           if (v[i] &amp;gt; v[j]) {&lt;br /&gt;
                                   temp = v[i];&lt;br /&gt;
                                   v[i] = v[j];&lt;br /&gt;
                                   v[j] = temp;&lt;br /&gt;
                    }&lt;br /&gt;
                   }         &lt;br /&gt;
          } }&lt;br /&gt;
*C++ &amp;lt;br&amp;gt;&lt;br /&gt;
template&amp;lt;typename _Ty&amp;gt;&lt;br /&gt;
void bubble_sort(vector&amp;lt;_Ty&amp;gt; &amp;amp; v){&lt;br /&gt;
 &lt;br /&gt;
        for (size_t i = 0; i &amp;lt; v.size() - 1; ++i){&lt;br /&gt;
                for (size_t j = i + 1; j &amp;lt; v.size(); ++j){&lt;br /&gt;
                        if (v[i] &amp;gt; v[j])&lt;br /&gt;
                                swap(v[i], v[j]);&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
*C#&lt;br /&gt;
    Public int[] OrdenarBurbuja(int[]x)&lt;br /&gt;
       {&lt;br /&gt;
            int t= x.Length, temp;&lt;br /&gt;
            for(int i=1 ; i&amp;lt; t ; i++)&lt;br /&gt;
                  for(int j = t-1 ; j &amp;gt;= i; j--)&lt;br /&gt;
                       {&lt;br /&gt;
                         if(x[j] &amp;lt; x[j-1])&lt;br /&gt;
                             {&lt;br /&gt;
                              temp= x[j];&lt;br /&gt;
                              x[j]= x[j-1];&lt;br /&gt;
                              x[j-1]= temp;&lt;br /&gt;
                             }&lt;br /&gt;
                       }&lt;br /&gt;
       return x;&lt;br /&gt;
       }&lt;br /&gt;
*Java&lt;br /&gt;
    //Ordenamiento por Burbuja &lt;br /&gt;
    // by ramses2999&lt;br /&gt;
    publicstatic int[] OrdenarBurbuja(int[] n){&lt;br /&gt;
        int temp;&lt;br /&gt;
        int t = n.length;&lt;br /&gt;
        for (int i = 1; i &amp;lt; t; i++) {&lt;br /&gt;
            for (int k = t- 1; k &amp;gt;= i; k--) {&lt;br /&gt;
                if(n[k] &amp;lt; n[k-1]){&lt;br /&gt;
                    temp = n[k];&lt;br /&gt;
                    n[k] = n[k-1];&lt;br /&gt;
                    n[k-1]=  temp;&lt;br /&gt;
                }//fin if&lt;br /&gt;
            }// fin 2 for&lt;br /&gt;
        }//fin 1 for&lt;br /&gt;
        return n;&lt;br /&gt;
    }//fin&lt;br /&gt;
*Perl&lt;br /&gt;
sub bubblesort {&lt;br /&gt;
    # Ordena la lista pasada como argumento por valor&lt;br /&gt;
    for my $i (    0 .. @_-2 ) {&lt;br /&gt;
    for my $j ( $i+1 .. @_-1 ) {&lt;br /&gt;
        @_[ $i, $j ] = @_[ $j, $i ] if $_[$i] &amp;gt; $_[$j];&lt;br /&gt;
    }}&lt;br /&gt;
}&lt;br /&gt;
*Visual Basic&lt;br /&gt;
    Private Sub OrdenarBurbuja(ByRef VectorOriginal() As Integer)&lt;br /&gt;
        Dim Temp, Longitud As Integer&lt;br /&gt;
        Longitud = UBound(VectorOriginal) - 2&lt;br /&gt;
        For b = 0 To Longitud&lt;br /&gt;
            For a = 0 To Longitud&lt;br /&gt;
                If VectorOriginal(a) &amp;gt; VectorOriginal(a + 1) Then&lt;br /&gt;
                    Temp = VectorOriginal(a + 1)&lt;br /&gt;
                    VectorOriginal(a + 1) = VectorOriginal(a)&lt;br /&gt;
                    VectorOriginal(a) = Temp&lt;br /&gt;
                EndIf&lt;br /&gt;
            Next&lt;br /&gt;
        Next&lt;br /&gt;
    End Sub&lt;br /&gt;
*PHP&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
 &lt;br /&gt;
//Ordenamiento por burbuja&lt;br /&gt;
$numeros = array(9, 4, -1, 7, 8, 11, 6, 12, 10, 5);&lt;br /&gt;
 &lt;br /&gt;
$n = count($numeros);&lt;br /&gt;
 &lt;br /&gt;
for ($i = 1; $i&amp;lt;$n; $i++) {&lt;br /&gt;
    for ($j = $n-1; $j &amp;gt;= $i; $j--) {&lt;br /&gt;
        echo &amp;quot;i: $i, j: $j\n&amp;quot;;&lt;br /&gt;
        echo &amp;quot;Comparando &amp;quot; . $numeros[$j-1] . &amp;quot; y &amp;quot; . $numeros[$j] . &amp;quot;\n&amp;quot;;&lt;br /&gt;
        if ($numeros[$j-1] &amp;gt; $numeros[$j]) {&lt;br /&gt;
            $aux = $numeros[$j];&lt;br /&gt;
            $numeros[$j] = $numeros[$j-1];&lt;br /&gt;
            $numeros[$j-1] = $aux;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
print_r($numeros);&lt;br /&gt;
*Pascal&lt;br /&gt;
Procedure Burbuja(var lista:vector;size:integer);&lt;br /&gt;
var i,j:integer;&lt;br /&gt;
 &lt;br /&gt;
begin&lt;br /&gt;
 for i:=1 to size-1 do&lt;br /&gt;
   for j:=1 to size-i do&lt;br /&gt;
    begin&lt;br /&gt;
        if lista[j]&amp;gt;lista[j+1] then&lt;br /&gt;
          begin&lt;br /&gt;
               aux:=lista[j];&lt;br /&gt;
               lista[j]:=lista[j+1];&lt;br /&gt;
               lista[j+1]:=aux&lt;br /&gt;
          end;&lt;br /&gt;
    end;&lt;br /&gt;
end;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*Algoritmos de ordenamiento. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_de_burbuja Wikipedia]. &lt;br /&gt;
&lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Ordenamiento_de_burbuja&amp;diff=705397</id>
		<title>Ordenamiento de burbuja</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Ordenamiento_de_burbuja&amp;diff=705397"/>
		<updated>2011-06-30T01:23:49Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Burbuja|imagen=Sorting_quicksort_.JPG|concepto=Algoritmo que pone elementos de una lista o un vector, en una secuencia dada por una relación de orden}}'''[[Algoritmo de ordenamiento]]. Burbuja'''(Bubble Sort en inglés) es un sencillo algoritmo de ordenamiento. Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual significa que la lista está ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista los elementos durante los intercambios, como si fueran pequeñas burbujas. También es conocido como el método del intercambio directo. Dado que solo usa comparaciones para operar elementos, se lo considera un algoritmo de comparación, siendo el más sencillo de implementar.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Descripción ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
El procedimiento de la burbuja es el siguiente:&lt;br /&gt;
§         Ir comparando desde la casilla 0 número tras número hasta encontrar uno mayor, si este es realmente  el mayor de todo el vector se llevará hasta la última casilla, si no es así, será reemplazado por uno mayor que él.&lt;br /&gt;
§         Este procedimiento seguirá así hasta que haya ordenado todas las casillas del vector.&lt;br /&gt;
§         Una de las deficiencias del algoritmo es que ya cuando a ordenado parte del vector vuelve a compararlo cuando esto ya no es necesario.&lt;br /&gt;
 &lt;br /&gt;
Dado un vector a1, a2, a3, ... an &lt;br /&gt;
1) Comparar a1 con a2 e intercambiarlos si a1&amp;gt;a2 (o a12) &lt;br /&gt;
2) Seguir hasta que todo se haya comparado an-1 con an &lt;br /&gt;
3) Repetir el proceso anterior n-1 veces&amp;lt;br&amp;gt;&lt;br /&gt;
Algoritmo:                     Complejidad&lt;br /&gt;
for(i=0; i &amp;lt; n-++){               T(n2)&lt;br /&gt;
 for(j=0; j &amp;lt; n-1; j++){          T(n)&lt;br /&gt;
   if(vec[j] &amp;gt; vec[j+1]){         T(1)&lt;br /&gt;
     aux=vec[j];                  T(1)&lt;br /&gt;
     vec[j]=vec[j+1];             T(1)&lt;br /&gt;
     vec[j+1]=aux;}               T(1)&lt;br /&gt;
  } }&amp;lt;br&amp;gt;&lt;br /&gt;
El siguiente ejemplo muestra el proceso de forma gráfica:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Tabla burbuja.JPG|center|Tabla burbuja.JPG]]       &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Al algoritmo de la burbuja, para ordenar un vector de '''n''' términos, tiene que realizar siempre el mismo número de comparaciones:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b1.gif|left|b1.gif]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Esto es, el número de comparaciones '''c(n) ''' no depende del orden de los términos, si no del número de términos.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b2.gif|left|b2.gif]] &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Por lo tanto la cota ajustada asintótica del número de comparaciones pertenece al orden de '''n''' cuadrado.&lt;br /&gt;
El numero de intercambios '''i(n)''', que hay que realizar depende del orden de los términos y podemos diferencia, el caso mejor, si el vector esta previamente ordenado, y el caso peor, si el vector esta ordenado en orden inverso.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b3.gif|left|b3.gif]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Por lo que no se puede determinar una cota ajustada asintótica del número de intercambios, dado que este dependerá del orden del vector en cuestión.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rendimiento en el caso desfavorable'''&amp;lt;br&amp;gt;&lt;br /&gt;
Si pasamos al algoritmo un vector ordenado en orden inverso realizara un número de comparaciones:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b1.gif|left|b1.gif]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Como ya hemos dicho anteriormente, y tendrá que realizar un número igual de intercambios entre los términos del vector, dado que en cada comparación los términos estarán desordenados, y se realizará el intercambio.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b4.gif|left|b4.gif]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Por lo tanto en el caso más desfavorable tanto el número de comparaciones como el de intercambios coinciden:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b5.gif|left|b5.gif]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El número de comparaciones o de intercambios en el caso más desfavorable pertenece al orden de '''n''' cuadrado.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rendimiento en casos óptimos'''&amp;lt;br&amp;gt;&lt;br /&gt;
En el caso óptimo, el más favorable, es la ordenación que un vector ya ordenado, en este caso el número de comparaciones será el mismo que en cualquier otro caso:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b6.gif|left|b6.gif]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La cota inferior asintótica del número de comparaciones pertenece al orden de '''n''' cuadrado, como en los demás casos, pero en todas las comparaciones el orden es el correcto y por tanto no se realiza ningún intercambio:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b7.gif|left|b7.gif]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por lo tanto el coste de intercambios no depende de '''n''', y es constante:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b8.gif|left|b8.gif]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El ordenamiento de burbuja tiene una complejidad '''Ω(n²)''' igual que ordenamiento por selección. Cuando una lista ya está ordenada, a diferencia del ordenamiento por inserción, que pasará por la lista una vez y encontrará que no hay necesidad de intercambiar las posiciones de los elementos, el método de ordenación por burbuja está forzado a pasar por dichas comparaciones, lo que hace que su complejidad sea cuadrática en el mejor de los casos. Esto lo cataloga como el '''algoritmo más ineficiente''' que existe, aunque para muchos programadores sea el más sencillo de implementar.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Aplicación ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
A pesar de que el ordenamiento de burbuja es uno de los algoritmos más sencillos de implementar, su orden '''O(n2)''' lo hace muy ineficiente para usar en listas que tengan más que un número reducido de elementos. Incluso entre los algoritmos de ordenamiento de orden '''O(n2)''', otros procedimientos como el ordenamiento por inserción son considerados más eficientes.&lt;br /&gt;
Dada su simplicidad, el ordenamiento de burbuja es utilizado para introducir el concepto de algoritmo de ordenamiento para estudiantes de ciencias de la computación. A pesar de esto, algunos investigadores como Owen Astrachan han criticado su popularidad en la enseñanza de ciencias de la computación, llegando a recomendar su eliminación de los planes de estudio. &lt;br /&gt;
Sumado a esto, Jargon File, un libro ampliamente citado en la cultura hacker, lo denomina &amp;quot;el mal algoritmo genérico&amp;quot;, y Donald Knuth, uno de los mayores expertos en ciencias de la computación, afirma que el ordenamiento de burbuja &amp;quot;no parece tener nada para recomendar su uso, a excepción de un nombre pegajoso y el hecho de que conlleva a problemas teóricos interesantes&amp;quot;.&lt;br /&gt;
El ordenamiento de burbuja es asintóticamente equivalente, en tiempos de ejecución, con el ordenamiento por inserción en el peor de los casos, pero ambos algoritmos difieren principalmente en la cantidad de intercambios que son necesarios. Resultados experimentales como los descubiertos por Astrachan han demostrado que el ordenamiento por inserción funciona considerablemente mejor incluso con listas aleatorias. Por esta razón, muchos libros de algoritmos modernos evitan usar el ordenamiento de burbuja, reemplazándolo por el ordenamiento por inserción.&lt;br /&gt;
El ordenamiento de burbuja interactúa vagamente con el hardware de las CPU modernas. Requiere al menos el doble de escrituras que el ordenamiento por inserción, el doble de pérdidas de cache, y asintóticamente más predicción de saltos. Varios experimentos de ordenamiento de cadenas en Java hechos por Astrachan muestran que el ordenamiento de burbuja es 5 veces más lento que el ordenamiento por inserción, y 40% más lento que el ordenamiento por selección. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Implementación==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el Ordenamiento de burbuja en algunos de los lenguajes de programación más usados:&lt;br /&gt;
*C &amp;lt;br&amp;gt;&lt;br /&gt;
//Ordenamiento por método de la Burbuja&lt;br /&gt;
void ordenamientoBurbuja(int v[], int util_v) {&lt;br /&gt;
         int temp, i, j;&lt;br /&gt;
 &lt;br /&gt;
         for (i = 0; i &amp;lt; util_v -1 ; i++) {&lt;br /&gt;
                  for (j = i + 1; j &amp;lt; util_v ; j++) {&lt;br /&gt;
                           if (v[i] &amp;gt; v[j]) {&lt;br /&gt;
                                   temp = v[i];&lt;br /&gt;
                                   v[i] = v[j];&lt;br /&gt;
                                   v[j] = temp;&lt;br /&gt;
                    }&lt;br /&gt;
                   }         &lt;br /&gt;
          } }&lt;br /&gt;
*C++ &amp;lt;br&amp;gt;&lt;br /&gt;
template&amp;lt;typename _Ty&amp;gt;&lt;br /&gt;
void bubble_sort(vector&amp;lt;_Ty&amp;gt; &amp;amp; v){&lt;br /&gt;
 &lt;br /&gt;
        for (size_t i = 0; i &amp;lt; v.size() - 1; ++i){&lt;br /&gt;
                for (size_t j = i + 1; j &amp;lt; v.size(); ++j){&lt;br /&gt;
                        if (v[i] &amp;gt; v[j])&lt;br /&gt;
                                swap(v[i], v[j]);&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
*C#&lt;br /&gt;
    Public int[] OrdenarBurbuja(int[]x)&lt;br /&gt;
       {&lt;br /&gt;
            int t= x.Length, temp;&lt;br /&gt;
            for(int i=1 ; i&amp;lt; t ; i++)&lt;br /&gt;
                  for(int j = t-1 ; j &amp;gt;= i; j--)&lt;br /&gt;
                       {&lt;br /&gt;
                         if(x[j] &amp;lt; x[j-1])&lt;br /&gt;
                             {&lt;br /&gt;
                              temp= x[j];&lt;br /&gt;
                              x[j]= x[j-1];&lt;br /&gt;
                              x[j-1]= temp;&lt;br /&gt;
                             }&lt;br /&gt;
                       }&lt;br /&gt;
       return x;&lt;br /&gt;
       }&lt;br /&gt;
*Java&lt;br /&gt;
    //Ordenamiento por Burbuja &lt;br /&gt;
    // by ramses2999&lt;br /&gt;
    publicstatic int[] OrdenarBurbuja(int[] n){&lt;br /&gt;
        int temp;&lt;br /&gt;
        int t = n.length;&lt;br /&gt;
        for (int i = 1; i &amp;lt; t; i++) {&lt;br /&gt;
            for (int k = t- 1; k &amp;gt;= i; k--) {&lt;br /&gt;
                if(n[k] &amp;lt; n[k-1]){&lt;br /&gt;
                    temp = n[k];&lt;br /&gt;
                    n[k] = n[k-1];&lt;br /&gt;
                    n[k-1]=  temp;&lt;br /&gt;
                }//fin if&lt;br /&gt;
            }// fin 2 for&lt;br /&gt;
        }//fin 1 for&lt;br /&gt;
        return n;&lt;br /&gt;
    }//fin&lt;br /&gt;
*Perl&lt;br /&gt;
sub bubblesort {&lt;br /&gt;
    # Ordena la lista pasada como argumento por valor&lt;br /&gt;
    for my $i (    0 .. @_-2 ) {&lt;br /&gt;
    for my $j ( $i+1 .. @_-1 ) {&lt;br /&gt;
        @_[ $i, $j ] = @_[ $j, $i ] if $_[$i] &amp;gt; $_[$j];&lt;br /&gt;
    }}&lt;br /&gt;
}&lt;br /&gt;
*Visual Basic&lt;br /&gt;
    Private Sub OrdenarBurbuja(ByRef VectorOriginal() As Integer)&lt;br /&gt;
        Dim Temp, Longitud As Integer&lt;br /&gt;
        Longitud = UBound(VectorOriginal) - 2&lt;br /&gt;
        For b = 0 To Longitud&lt;br /&gt;
            For a = 0 To Longitud&lt;br /&gt;
                If VectorOriginal(a) &amp;gt; VectorOriginal(a + 1) Then&lt;br /&gt;
                    Temp = VectorOriginal(a + 1)&lt;br /&gt;
                    VectorOriginal(a + 1) = VectorOriginal(a)&lt;br /&gt;
                    VectorOriginal(a) = Temp&lt;br /&gt;
                EndIf&lt;br /&gt;
            Next&lt;br /&gt;
        Next&lt;br /&gt;
    End Sub&lt;br /&gt;
*PHP&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
 &lt;br /&gt;
//Ordenamiento por burbuja&lt;br /&gt;
$numeros = array(9, 4, -1, 7, 8, 11, 6, 12, 10, 5);&lt;br /&gt;
 &lt;br /&gt;
$n = count($numeros);&lt;br /&gt;
 &lt;br /&gt;
for ($i = 1; $i&amp;lt;$n; $i++) {&lt;br /&gt;
    for ($j = $n-1; $j &amp;gt;= $i; $j--) {&lt;br /&gt;
        echo &amp;quot;i: $i, j: $j\n&amp;quot;;&lt;br /&gt;
        echo &amp;quot;Comparando &amp;quot; . $numeros[$j-1] . &amp;quot; y &amp;quot; . $numeros[$j] . &amp;quot;\n&amp;quot;;&lt;br /&gt;
        if ($numeros[$j-1] &amp;gt; $numeros[$j]) {&lt;br /&gt;
            $aux = $numeros[$j];&lt;br /&gt;
            $numeros[$j] = $numeros[$j-1];&lt;br /&gt;
            $numeros[$j-1] = $aux;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
print_r($numeros);&lt;br /&gt;
*Pascal&lt;br /&gt;
Procedure Burbuja(var lista:vector;size:integer);&lt;br /&gt;
var i,j:integer;&lt;br /&gt;
 &lt;br /&gt;
begin&lt;br /&gt;
 for i:=1 to size-1 do&lt;br /&gt;
   for j:=1 to size-i do&lt;br /&gt;
    begin&lt;br /&gt;
        if lista[j]&amp;gt;lista[j+1] then&lt;br /&gt;
          begin&lt;br /&gt;
               aux:=lista[j];&lt;br /&gt;
               lista[j]:=lista[j+1];&lt;br /&gt;
               lista[j+1]:=aux&lt;br /&gt;
          end;&lt;br /&gt;
    end;&lt;br /&gt;
end;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*Algoritmos de ordenamiento. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_de_burbuja Wikipedia]. &lt;br /&gt;
&lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Ordenamiento_de_burbuja&amp;diff=705395</id>
		<title>Ordenamiento de burbuja</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Ordenamiento_de_burbuja&amp;diff=705395"/>
		<updated>2011-06-30T01:22:14Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Burbuja|imagen=Sorting_quicksort_.JPG|concepto=Algoritmo que pone elementos de una lista o un vector, en una secuencia dada por una relación de orden}}'''[[Algoritmo de ordenamiento]]. Burbuja'''(Bubble Sort en inglés) es un sencillo algoritmo de ordenamiento. Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual significa que la lista está ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista los elementos durante los intercambios, como si fueran pequeñas burbujas. También es conocido como el método del intercambio directo. Dado que solo usa comparaciones para operar elementos, se lo considera un algoritmo de comparación, siendo el más sencillo de implementar.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Descripción ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
El procedimiento de la burbuja es el siguiente:&lt;br /&gt;
§         Ir comparando desde la casilla 0 número tras número hasta encontrar uno mayor, si este es realmente  el mayor de todo el vector se llevará hasta la última casilla, si no es así, será reemplazado por uno mayor que él.&lt;br /&gt;
§         Este procedimiento seguirá así hasta que haya ordenado todas las casillas del vector.&lt;br /&gt;
§         Una de las deficiencias del algoritmo es que ya cuando a ordenado parte del vector vuelve a compararlo cuando esto ya no es necesario.&lt;br /&gt;
 &lt;br /&gt;
Dado un vector a1, a2, a3, ... an &lt;br /&gt;
1) Comparar a1 con a2 e intercambiarlos si a1&amp;gt;a2 (o a12) &lt;br /&gt;
2) Seguir hasta que todo se haya comparado an-1 con an &lt;br /&gt;
3) Repetir el proceso anterior n-1 veces&amp;lt;br&amp;gt;&lt;br /&gt;
Algoritmo:                     Complejidad&lt;br /&gt;
for(i=0; i &amp;lt; n-++){               T(n2)&lt;br /&gt;
 for(j=0; j &amp;lt; n-1; j++){          T(n)&lt;br /&gt;
   if(vec[j] &amp;gt; vec[j+1]){         T(1)&lt;br /&gt;
     aux=vec[j];                  T(1)&lt;br /&gt;
     vec[j]=vec[j+1];             T(1)&lt;br /&gt;
     vec[j+1]=aux;}               T(1)&lt;br /&gt;
  } }&amp;lt;br&amp;gt;&lt;br /&gt;
El siguiente ejemplo muestra el proceso de forma gráfica:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Tabla burbuja.JPG|center|Tabla burbuja.JPG]]       &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Al algoritmo de la burbuja, para ordenar un vector de '''n''' términos, tiene que realizar siempre el mismo número de comparaciones:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b1.gif|left|b1.gif]] &amp;lt;br&amp;gt;&lt;br /&gt;
Esto es, el número de comparaciones '''c(n) ''' no depende del orden de los términos, si no del número de términos.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b2.gif|left|b2.gif]] &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Por lo tanto la cota ajustada asintótica del número de comparaciones pertenece al orden de '''n''' cuadrado.&lt;br /&gt;
El numero de intercambios '''i(n)''', que hay que realizar depende del orden de los términos y podemos diferencia, el caso mejor, si el vector esta previamente ordenado, y el caso peor, si el vector esta ordenado en orden inverso.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b3.gif|left|b3.gif]] &amp;lt;br&amp;gt;&lt;br /&gt;
Por lo que no se puede determinar una cota ajustada asintótica del número de intercambios, dado que este dependerá del orden del vector en cuestión.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rendimiento en el caso desfavorable'''&amp;lt;br&amp;gt;&lt;br /&gt;
Si pasamos al algoritmo un vector ordenado en orden inverso realizara un número de comparaciones:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b1.gif|left|b1.gif]] &amp;lt;br&amp;gt;&lt;br /&gt;
Como ya hemos dicho anteriormente, y tendrá que realizar un número igual de intercambios entre los términos del vector, dado que en cada comparación los términos estarán desordenados, y se realizará el intercambio.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b4.gif|left|b4.gif]] &amp;lt;br&amp;gt;&lt;br /&gt;
Por lo tanto en el caso más desfavorable tanto el número de comparaciones como el de intercambios coinciden:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b5.gif|left|b5.gif]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El número de comparaciones o de intercambios en el caso más desfavorable pertenece al orden de '''n''' cuadrado.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rendimiento en casos óptimos'''&amp;lt;br&amp;gt;&lt;br /&gt;
En el caso óptimo, el más favorable, es la ordenación que un vector ya ordenado, en este caso el número de comparaciones será el mismo que en cualquier otro caso:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b6.gif|left|b6.gif]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La cota inferior asintótica del número de comparaciones pertenece al orden de '''n''' cuadrado, como en los demás casos, pero en todas las comparaciones el orden es el correcto y por tanto no se realiza ningún intercambio:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b7.gif|left|b7.gif]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por lo tanto el coste de intercambios no depende de '''n''', y es constante:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b8.gif|left|b8.gif]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El ordenamiento de burbuja tiene una complejidad '''Ω(n²)''' igual que ordenamiento por selección. Cuando una lista ya está ordenada, a diferencia del ordenamiento por inserción, que pasará por la lista una vez y encontrará que no hay necesidad de intercambiar las posiciones de los elementos, el método de ordenación por burbuja está forzado a pasar por dichas comparaciones, lo que hace que su complejidad sea cuadrática en el mejor de los casos. Esto lo cataloga como el '''algoritmo más ineficiente''' que existe, aunque para muchos programadores sea el más sencillo de implementar.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Aplicación ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
A pesar de que el ordenamiento de burbuja es uno de los algoritmos más sencillos de implementar, su orden '''O(n2)''' lo hace muy ineficiente para usar en listas que tengan más que un número reducido de elementos. Incluso entre los algoritmos de ordenamiento de orden '''O(n2)''', otros procedimientos como el ordenamiento por inserción son considerados más eficientes.&lt;br /&gt;
Dada su simplicidad, el ordenamiento de burbuja es utilizado para introducir el concepto de algoritmo de ordenamiento para estudiantes de ciencias de la computación. A pesar de esto, algunos investigadores como Owen Astrachan han criticado su popularidad en la enseñanza de ciencias de la computación, llegando a recomendar su eliminación de los planes de estudio. &lt;br /&gt;
Sumado a esto, Jargon File, un libro ampliamente citado en la cultura hacker, lo denomina &amp;quot;el mal algoritmo genérico&amp;quot;, y Donald Knuth, uno de los mayores expertos en ciencias de la computación, afirma que el ordenamiento de burbuja &amp;quot;no parece tener nada para recomendar su uso, a excepción de un nombre pegajoso y el hecho de que conlleva a problemas teóricos interesantes&amp;quot;.&lt;br /&gt;
El ordenamiento de burbuja es asintóticamente equivalente, en tiempos de ejecución, con el ordenamiento por inserción en el peor de los casos, pero ambos algoritmos difieren principalmente en la cantidad de intercambios que son necesarios. Resultados experimentales como los descubiertos por Astrachan han demostrado que el ordenamiento por inserción funciona considerablemente mejor incluso con listas aleatorias. Por esta razón, muchos libros de algoritmos modernos evitan usar el ordenamiento de burbuja, reemplazándolo por el ordenamiento por inserción.&lt;br /&gt;
El ordenamiento de burbuja interactúa vagamente con el hardware de las CPU modernas. Requiere al menos el doble de escrituras que el ordenamiento por inserción, el doble de pérdidas de cache, y asintóticamente más predicción de saltos. Varios experimentos de ordenamiento de cadenas en Java hechos por Astrachan muestran que el ordenamiento de burbuja es 5 veces más lento que el ordenamiento por inserción, y 40% más lento que el ordenamiento por selección. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Implementación==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el Ordenamiento de burbuja en algunos de los lenguajes de programación más usados:&lt;br /&gt;
*C &amp;lt;br&amp;gt;&lt;br /&gt;
//Ordenamiento por método de la Burbuja&lt;br /&gt;
void ordenamientoBurbuja(int v[], int util_v) {&lt;br /&gt;
         int temp, i, j;&lt;br /&gt;
 &lt;br /&gt;
         for (i = 0; i &amp;lt; util_v -1 ; i++) {&lt;br /&gt;
                  for (j = i + 1; j &amp;lt; util_v ; j++) {&lt;br /&gt;
                           if (v[i] &amp;gt; v[j]) {&lt;br /&gt;
                                   temp = v[i];&lt;br /&gt;
                                   v[i] = v[j];&lt;br /&gt;
                                   v[j] = temp;&lt;br /&gt;
                    }&lt;br /&gt;
                   }         &lt;br /&gt;
          } }&lt;br /&gt;
*C++ &amp;lt;br&amp;gt;&lt;br /&gt;
template&amp;lt;typename _Ty&amp;gt;&lt;br /&gt;
void bubble_sort(vector&amp;lt;_Ty&amp;gt; &amp;amp; v){&lt;br /&gt;
 &lt;br /&gt;
        for (size_t i = 0; i &amp;lt; v.size() - 1; ++i){&lt;br /&gt;
                for (size_t j = i + 1; j &amp;lt; v.size(); ++j){&lt;br /&gt;
                        if (v[i] &amp;gt; v[j])&lt;br /&gt;
                                swap(v[i], v[j]);&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
*C#&lt;br /&gt;
    Public int[] OrdenarBurbuja(int[]x)&lt;br /&gt;
       {&lt;br /&gt;
            int t= x.Length, temp;&lt;br /&gt;
            for(int i=1 ; i&amp;lt; t ; i++)&lt;br /&gt;
                  for(int j = t-1 ; j &amp;gt;= i; j--)&lt;br /&gt;
                       {&lt;br /&gt;
                         if(x[j] &amp;lt; x[j-1])&lt;br /&gt;
                             {&lt;br /&gt;
                              temp= x[j];&lt;br /&gt;
                              x[j]= x[j-1];&lt;br /&gt;
                              x[j-1]= temp;&lt;br /&gt;
                             }&lt;br /&gt;
                       }&lt;br /&gt;
       return x;&lt;br /&gt;
       }&lt;br /&gt;
*Java&lt;br /&gt;
    //Ordenamiento por Burbuja &lt;br /&gt;
    // by ramses2999&lt;br /&gt;
    publicstatic int[] OrdenarBurbuja(int[] n){&lt;br /&gt;
        int temp;&lt;br /&gt;
        int t = n.length;&lt;br /&gt;
        for (int i = 1; i &amp;lt; t; i++) {&lt;br /&gt;
            for (int k = t- 1; k &amp;gt;= i; k--) {&lt;br /&gt;
                if(n[k] &amp;lt; n[k-1]){&lt;br /&gt;
                    temp = n[k];&lt;br /&gt;
                    n[k] = n[k-1];&lt;br /&gt;
                    n[k-1]=  temp;&lt;br /&gt;
                }//fin if&lt;br /&gt;
            }// fin 2 for&lt;br /&gt;
        }//fin 1 for&lt;br /&gt;
        return n;&lt;br /&gt;
    }//fin&lt;br /&gt;
*Perl&lt;br /&gt;
sub bubblesort {&lt;br /&gt;
    # Ordena la lista pasada como argumento por valor&lt;br /&gt;
    for my $i (    0 .. @_-2 ) {&lt;br /&gt;
    for my $j ( $i+1 .. @_-1 ) {&lt;br /&gt;
        @_[ $i, $j ] = @_[ $j, $i ] if $_[$i] &amp;gt; $_[$j];&lt;br /&gt;
    }}&lt;br /&gt;
}&lt;br /&gt;
*Visual Basic&lt;br /&gt;
    Private Sub OrdenarBurbuja(ByRef VectorOriginal() As Integer)&lt;br /&gt;
        Dim Temp, Longitud As Integer&lt;br /&gt;
        Longitud = UBound(VectorOriginal) - 2&lt;br /&gt;
        For b = 0 To Longitud&lt;br /&gt;
            For a = 0 To Longitud&lt;br /&gt;
                If VectorOriginal(a) &amp;gt; VectorOriginal(a + 1) Then&lt;br /&gt;
                    Temp = VectorOriginal(a + 1)&lt;br /&gt;
                    VectorOriginal(a + 1) = VectorOriginal(a)&lt;br /&gt;
                    VectorOriginal(a) = Temp&lt;br /&gt;
                EndIf&lt;br /&gt;
            Next&lt;br /&gt;
        Next&lt;br /&gt;
    End Sub&lt;br /&gt;
*PHP&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
 &lt;br /&gt;
//Ordenamiento por burbuja&lt;br /&gt;
$numeros = array(9, 4, -1, 7, 8, 11, 6, 12, 10, 5);&lt;br /&gt;
 &lt;br /&gt;
$n = count($numeros);&lt;br /&gt;
 &lt;br /&gt;
for ($i = 1; $i&amp;lt;$n; $i++) {&lt;br /&gt;
    for ($j = $n-1; $j &amp;gt;= $i; $j--) {&lt;br /&gt;
        echo &amp;quot;i: $i, j: $j\n&amp;quot;;&lt;br /&gt;
        echo &amp;quot;Comparando &amp;quot; . $numeros[$j-1] . &amp;quot; y &amp;quot; . $numeros[$j] . &amp;quot;\n&amp;quot;;&lt;br /&gt;
        if ($numeros[$j-1] &amp;gt; $numeros[$j]) {&lt;br /&gt;
            $aux = $numeros[$j];&lt;br /&gt;
            $numeros[$j] = $numeros[$j-1];&lt;br /&gt;
            $numeros[$j-1] = $aux;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
print_r($numeros);&lt;br /&gt;
*Pascal&lt;br /&gt;
Procedure Burbuja(var lista:vector;size:integer);&lt;br /&gt;
var i,j:integer;&lt;br /&gt;
 &lt;br /&gt;
begin&lt;br /&gt;
 for i:=1 to size-1 do&lt;br /&gt;
   for j:=1 to size-i do&lt;br /&gt;
    begin&lt;br /&gt;
        if lista[j]&amp;gt;lista[j+1] then&lt;br /&gt;
          begin&lt;br /&gt;
               aux:=lista[j];&lt;br /&gt;
               lista[j]:=lista[j+1];&lt;br /&gt;
               lista[j+1]:=aux&lt;br /&gt;
          end;&lt;br /&gt;
    end;&lt;br /&gt;
end;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*Algoritmos de ordenamiento. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_de_burbuja Wikipedia]. &lt;br /&gt;
&lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Ordenamiento_de_burbuja&amp;diff=705394</id>
		<title>Ordenamiento de burbuja</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Ordenamiento_de_burbuja&amp;diff=705394"/>
		<updated>2011-06-30T01:20:55Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Definición|Nombre=Algoritmo de ordenamiento. Burbuja|imagen=Sorting_quicksort_.JPG|concepto=Algoritmo que pone elementos de una lista o un vector, en una secuencia dada por una relación de orden}}'''[[Algoritmo de ordenamiento]]. Burbuja'''(Bubble Sort en inglés) es un sencillo algoritmo de ordenamiento. Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual significa que la lista está ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista los elementos durante los intercambios, como si fueran pequeñas burbujas. También es conocido como el método del intercambio directo. Dado que solo usa comparaciones para operar elementos, se lo considera un algoritmo de comparación, siendo el más sencillo de implementar.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Descripción ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
El procedimiento de la burbuja es el siguiente:&lt;br /&gt;
§         Ir comparando desde la casilla 0 número tras número hasta encontrar uno mayor, si este es realmente  el mayor de todo el vector se llevará hasta la última casilla, si no es así, será reemplazado por uno mayor que él.&lt;br /&gt;
§         Este procedimiento seguirá así hasta que haya ordenado todas las casillas del vector.&lt;br /&gt;
§         Una de las deficiencias del algoritmo es que ya cuando a ordenado parte del vector vuelve a compararlo cuando esto ya no es necesario.&lt;br /&gt;
 &lt;br /&gt;
Dado un vector a1, a2, a3, ... an &lt;br /&gt;
1) Comparar a1 con a2 e intercambiarlos si a1&amp;gt;a2 (o a12) &lt;br /&gt;
2) Seguir hasta que todo se haya comparado an-1 con an &lt;br /&gt;
3) Repetir el proceso anterior n-1 veces&amp;lt;br&amp;gt;&lt;br /&gt;
Algoritmo:                     Complejidad&lt;br /&gt;
for(i=0; i &amp;lt; n-++){               T(n2)&lt;br /&gt;
 for(j=0; j &amp;lt; n-1; j++){          T(n)&lt;br /&gt;
   if(vec[j] &amp;gt; vec[j+1]){         T(1)&lt;br /&gt;
     aux=vec[j];                  T(1)&lt;br /&gt;
     vec[j]=vec[j+1];             T(1)&lt;br /&gt;
     vec[j+1]=aux;}               T(1)&lt;br /&gt;
  } }&amp;lt;br&amp;gt;&lt;br /&gt;
El siguiente ejemplo muestra el proceso de forma gráfica:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Tabla burbuja.JPG|center|Tabla burbuja.JPG]]       &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
== Análisis del Costo Computacional ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Al algoritmo de la burbuja, para ordenar un vector de '''n''' términos, tiene que realizar siempre el mismo número de comparaciones:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b1.gif|left|b1.gif]] &amp;lt;br&amp;gt;&lt;br /&gt;
Esto es, el número de comparaciones '''c(n) ''' no depende del orden de los términos, si no del número de términos.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b2.gif|left|b2.gif]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por lo tanto la cota ajustada asintótica del número de comparaciones pertenece al orden de '''n''' cuadrado.&lt;br /&gt;
El numero de intercambios '''i(n)''', que hay que realizar depende del orden de los términos y podemos diferencia, el caso mejor, si el vector esta previamente ordenado, y el caso peor, si el vector esta ordenado en orden inverso.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b3.gif|left|b3.gif]] &amp;lt;br&amp;gt;&lt;br /&gt;
Por lo que no se puede determinar una cota ajustada asintótica del número de intercambios, dado que este dependerá del orden del vector en cuestión.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rendimiento en el caso desfavorable'''&amp;lt;br&amp;gt;&lt;br /&gt;
Si pasamos al algoritmo un vector ordenado en orden inverso realizara un número de comparaciones:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b1.gif|left|b1.gif]] &amp;lt;br&amp;gt;&lt;br /&gt;
Como ya hemos dicho anteriormente, y tendrá que realizar un número igual de intercambios entre los términos del vector, dado que en cada comparación los términos estarán desordenados, y se realizará el intercambio.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b4.gif|left|b4.gif]] &amp;lt;br&amp;gt;&lt;br /&gt;
Por lo tanto en el caso más desfavorable tanto el número de comparaciones como el de intercambios coinciden:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b5.gif|left|b5.gif]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El número de comparaciones o de intercambios en el caso más desfavorable pertenece al orden de '''n''' cuadrado.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Rendimiento en casos óptimos'''&amp;lt;br&amp;gt;&lt;br /&gt;
En el caso óptimo, el más favorable, es la ordenación que un vector ya ordenado, en este caso el número de comparaciones será el mismo que en cualquier otro caso:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b6.gif|left|b6.gif]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La cota inferior asintótica del número de comparaciones pertenece al orden de '''n''' cuadrado, como en los demás casos, pero en todas las comparaciones el orden es el correcto y por tanto no se realiza ningún intercambio:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b7.gif|left|b7.gif]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por lo tanto el coste de intercambios no depende de '''n''', y es constante:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:b8.gif|left|b8.gif]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El ordenamiento de burbuja tiene una complejidad '''Ω(n²)''' igual que ordenamiento por selección. Cuando una lista ya está ordenada, a diferencia del ordenamiento por inserción, que pasará por la lista una vez y encontrará que no hay necesidad de intercambiar las posiciones de los elementos, el método de ordenación por burbuja está forzado a pasar por dichas comparaciones, lo que hace que su complejidad sea cuadrática en el mejor de los casos. Esto lo cataloga como el '''algoritmo más ineficiente''' que existe, aunque para muchos programadores sea el más sencillo de implementar.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Aplicación ==&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
A pesar de que el ordenamiento de burbuja es uno de los algoritmos más sencillos de implementar, su orden '''O(n2)''' lo hace muy ineficiente para usar en listas que tengan más que un número reducido de elementos. Incluso entre los algoritmos de ordenamiento de orden '''O(n2)''', otros procedimientos como el ordenamiento por inserción son considerados más eficientes.&lt;br /&gt;
Dada su simplicidad, el ordenamiento de burbuja es utilizado para introducir el concepto de algoritmo de ordenamiento para estudiantes de ciencias de la computación. A pesar de esto, algunos investigadores como Owen Astrachan han criticado su popularidad en la enseñanza de ciencias de la computación, llegando a recomendar su eliminación de los planes de estudio. &lt;br /&gt;
Sumado a esto, Jargon File, un libro ampliamente citado en la cultura hacker, lo denomina &amp;quot;el mal algoritmo genérico&amp;quot;, y Donald Knuth, uno de los mayores expertos en ciencias de la computación, afirma que el ordenamiento de burbuja &amp;quot;no parece tener nada para recomendar su uso, a excepción de un nombre pegajoso y el hecho de que conlleva a problemas teóricos interesantes&amp;quot;.&lt;br /&gt;
El ordenamiento de burbuja es asintóticamente equivalente, en tiempos de ejecución, con el ordenamiento por inserción en el peor de los casos, pero ambos algoritmos difieren principalmente en la cantidad de intercambios que son necesarios. Resultados experimentales como los descubiertos por Astrachan han demostrado que el ordenamiento por inserción funciona considerablemente mejor incluso con listas aleatorias. Por esta razón, muchos libros de algoritmos modernos evitan usar el ordenamiento de burbuja, reemplazándolo por el ordenamiento por inserción.&lt;br /&gt;
El ordenamiento de burbuja interactúa vagamente con el hardware de las CPU modernas. Requiere al menos el doble de escrituras que el ordenamiento por inserción, el doble de pérdidas de cache, y asintóticamente más predicción de saltos. Varios experimentos de ordenamiento de cadenas en Java hechos por Astrachan muestran que el ordenamiento de burbuja es 5 veces más lento que el ordenamiento por inserción, y 40% más lento que el ordenamiento por selección. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Implementación==&lt;br /&gt;
&lt;br /&gt;
A continuación se muestra el Ordenamiento de burbuja en algunos de los lenguajes de programación más usados:&lt;br /&gt;
*C &amp;lt;br&amp;gt;&lt;br /&gt;
//Ordenamiento por método de la Burbuja&lt;br /&gt;
void ordenamientoBurbuja(int v[], int util_v) {&lt;br /&gt;
         int temp, i, j;&lt;br /&gt;
 &lt;br /&gt;
         for (i = 0; i &amp;lt; util_v -1 ; i++) {&lt;br /&gt;
                  for (j = i + 1; j &amp;lt; util_v ; j++) {&lt;br /&gt;
                           if (v[i] &amp;gt; v[j]) {&lt;br /&gt;
                                   temp = v[i];&lt;br /&gt;
                                   v[i] = v[j];&lt;br /&gt;
                                   v[j] = temp;&lt;br /&gt;
                    }&lt;br /&gt;
                   }         &lt;br /&gt;
          } }&lt;br /&gt;
*C++ &amp;lt;br&amp;gt;&lt;br /&gt;
template&amp;lt;typename _Ty&amp;gt;&lt;br /&gt;
void bubble_sort(vector&amp;lt;_Ty&amp;gt; &amp;amp; v){&lt;br /&gt;
 &lt;br /&gt;
        for (size_t i = 0; i &amp;lt; v.size() - 1; ++i){&lt;br /&gt;
                for (size_t j = i + 1; j &amp;lt; v.size(); ++j){&lt;br /&gt;
                        if (v[i] &amp;gt; v[j])&lt;br /&gt;
                                swap(v[i], v[j]);&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
*C#&lt;br /&gt;
    Public int[] OrdenarBurbuja(int[]x)&lt;br /&gt;
       {&lt;br /&gt;
            int t= x.Length, temp;&lt;br /&gt;
            for(int i=1 ; i&amp;lt; t ; i++)&lt;br /&gt;
                  for(int j = t-1 ; j &amp;gt;= i; j--)&lt;br /&gt;
                       {&lt;br /&gt;
                         if(x[j] &amp;lt; x[j-1])&lt;br /&gt;
                             {&lt;br /&gt;
                              temp= x[j];&lt;br /&gt;
                              x[j]= x[j-1];&lt;br /&gt;
                              x[j-1]= temp;&lt;br /&gt;
                             }&lt;br /&gt;
                       }&lt;br /&gt;
       return x;&lt;br /&gt;
       }&lt;br /&gt;
*Java&lt;br /&gt;
    //Ordenamiento por Burbuja &lt;br /&gt;
    // by ramses2999&lt;br /&gt;
    publicstatic int[] OrdenarBurbuja(int[] n){&lt;br /&gt;
        int temp;&lt;br /&gt;
        int t = n.length;&lt;br /&gt;
        for (int i = 1; i &amp;lt; t; i++) {&lt;br /&gt;
            for (int k = t- 1; k &amp;gt;= i; k--) {&lt;br /&gt;
                if(n[k] &amp;lt; n[k-1]){&lt;br /&gt;
                    temp = n[k];&lt;br /&gt;
                    n[k] = n[k-1];&lt;br /&gt;
                    n[k-1]=  temp;&lt;br /&gt;
                }//fin if&lt;br /&gt;
            }// fin 2 for&lt;br /&gt;
        }//fin 1 for&lt;br /&gt;
        return n;&lt;br /&gt;
    }//fin&lt;br /&gt;
*Perl&lt;br /&gt;
sub bubblesort {&lt;br /&gt;
    # Ordena la lista pasada como argumento por valor&lt;br /&gt;
    for my $i (    0 .. @_-2 ) {&lt;br /&gt;
    for my $j ( $i+1 .. @_-1 ) {&lt;br /&gt;
        @_[ $i, $j ] = @_[ $j, $i ] if $_[$i] &amp;gt; $_[$j];&lt;br /&gt;
    }}&lt;br /&gt;
}&lt;br /&gt;
*Visual Basic&lt;br /&gt;
    Private Sub OrdenarBurbuja(ByRef VectorOriginal() As Integer)&lt;br /&gt;
        Dim Temp, Longitud As Integer&lt;br /&gt;
        Longitud = UBound(VectorOriginal) - 2&lt;br /&gt;
        For b = 0 To Longitud&lt;br /&gt;
            For a = 0 To Longitud&lt;br /&gt;
                If VectorOriginal(a) &amp;gt; VectorOriginal(a + 1) Then&lt;br /&gt;
                    Temp = VectorOriginal(a + 1)&lt;br /&gt;
                    VectorOriginal(a + 1) = VectorOriginal(a)&lt;br /&gt;
                    VectorOriginal(a) = Temp&lt;br /&gt;
                EndIf&lt;br /&gt;
            Next&lt;br /&gt;
        Next&lt;br /&gt;
    End Sub&lt;br /&gt;
*PHP&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
 &lt;br /&gt;
//Ordenamiento por burbuja&lt;br /&gt;
$numeros = array(9, 4, -1, 7, 8, 11, 6, 12, 10, 5);&lt;br /&gt;
 &lt;br /&gt;
$n = count($numeros);&lt;br /&gt;
 &lt;br /&gt;
for ($i = 1; $i&amp;lt;$n; $i++) {&lt;br /&gt;
    for ($j = $n-1; $j &amp;gt;= $i; $j--) {&lt;br /&gt;
        echo &amp;quot;i: $i, j: $j\n&amp;quot;;&lt;br /&gt;
        echo &amp;quot;Comparando &amp;quot; . $numeros[$j-1] . &amp;quot; y &amp;quot; . $numeros[$j] . &amp;quot;\n&amp;quot;;&lt;br /&gt;
        if ($numeros[$j-1] &amp;gt; $numeros[$j]) {&lt;br /&gt;
            $aux = $numeros[$j];&lt;br /&gt;
            $numeros[$j] = $numeros[$j-1];&lt;br /&gt;
            $numeros[$j-1] = $aux;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
print_r($numeros);&lt;br /&gt;
*Pascal&lt;br /&gt;
Procedure Burbuja(var lista:vector;size:integer);&lt;br /&gt;
var i,j:integer;&lt;br /&gt;
 &lt;br /&gt;
begin&lt;br /&gt;
 for i:=1 to size-1 do&lt;br /&gt;
   for j:=1 to size-i do&lt;br /&gt;
    begin&lt;br /&gt;
        if lista[j]&amp;gt;lista[j+1] then&lt;br /&gt;
          begin&lt;br /&gt;
               aux:=lista[j];&lt;br /&gt;
               lista[j]:=lista[j+1];&lt;br /&gt;
               lista[j+1]:=aux&lt;br /&gt;
          end;&lt;br /&gt;
    end;&lt;br /&gt;
end;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Vease también ==&lt;br /&gt;
 &lt;br /&gt;
*Algoritmos de ordenamiento. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Fuentes ==&lt;br /&gt;
 &lt;br /&gt;
*Aprenda C/C++.&lt;br /&gt;
*Estructuras de datos.&lt;br /&gt;
*[http://es.wikipedia.org/wiki/Ordenamiento_de_burbuja Wikipedia]. &lt;br /&gt;
&lt;br /&gt;
[[Category:Algoritmos]]&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:B8.gif&amp;diff=705393</id>
		<title>Archivo:B8.gif</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:B8.gif&amp;diff=705393"/>
		<updated>2011-06-30T01:20:33Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sumario ==&lt;br /&gt;
&lt;br /&gt;
== Estado de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:B7.gif&amp;diff=705392</id>
		<title>Archivo:B7.gif</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:B7.gif&amp;diff=705392"/>
		<updated>2011-06-30T01:19:52Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sumario ==&lt;br /&gt;
&lt;br /&gt;
== Estado de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:B6.gif&amp;diff=705391</id>
		<title>Archivo:B6.gif</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:B6.gif&amp;diff=705391"/>
		<updated>2011-06-30T01:18:43Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sumario ==&lt;br /&gt;
&lt;br /&gt;
== Estado de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:B5.gif&amp;diff=705387</id>
		<title>Archivo:B5.gif</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:B5.gif&amp;diff=705387"/>
		<updated>2011-06-30T01:17:20Z</updated>

		<summary type="html">&lt;p&gt;Manuel jc.manzanillo1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sumario ==&lt;br /&gt;
&lt;br /&gt;
== Estado de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Manuel jc.manzanillo1</name></author>
		
	</entry>
</feed>