<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arreglos y Matrices &#8211; PSeInt.org</title>
	<atom:link href="https://pseint.org/arreglos-y-matrices/feed/" rel="self" type="application/rss+xml" />
	<link>https://pseint.org</link>
	<description>Descarga, Tutoriales y Ejercicios de Pseudocódigo</description>
	<lastBuildDate>Sun, 18 Jan 2026 14:27:45 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://pseint.org/wp-content/uploads/2026/01/favicon-150x150.png</url>
	<title>Arreglos y Matrices &#8211; PSeInt.org</title>
	<link>https://pseint.org</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Ordenamiento Burbuja (Bubble Sort) en PSeInt: La Guía Definitiva 2026</title>
		<link>https://pseint.org/ordenamiento-burbuja-pseint/</link>
					<comments>https://pseint.org/ordenamiento-burbuja-pseint/#respond</comments>
		
		<dc:creator><![CDATA[El Profe Juan]]></dc:creator>
		<pubDate>Sun, 18 Jan 2026 14:27:45 +0000</pubDate>
				<category><![CDATA[Arreglos y Matrices]]></category>
		<guid isPermaLink="false">https://pseint.org/?p=681</guid>

					<description><![CDATA[Nivel: Avanzado Tiempo: ~30 min ¿Cómo organiza una computadora una lista de contactos, precios o puntuaciones de menor a mayor? La respuesta está en los Algoritmos de Ordenamiento. Hoy aprenderás el más clásico y pedagógico de todos: el Método de la Burbuja (Bubble Sort). Aunque no es el más rápido para millones de datos, es...]]></description>
										<content:encoded><![CDATA[
<article style="font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; color: #334155; line-height: 1.8; max-width: 100%;">

    <!-- 1. HEADER (SEO OPTIMIZED) -->
    <header style="margin-bottom: 40px;">
        <div style="display: flex; gap: 10px; margin-bottom: 15px;">
            <span style="background-color: #e0f2fe; color: #0284c7; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; text-transform: uppercase;">
                Nivel: Avanzado
            </span>
            <span style="background-color: #f1f5f9; color: #64748b; padding: 4px 12px; border-radius: 4px; font-size: 0.85rem; font-weight: 600;">
                Tiempo: ~30 min
            </span>
        </div>
        <div style="background: #f8fafc; border-left: 5px solid #2563eb; padding: 25px; border-radius: 0 8px 8px 0;">
            <p style="margin: 0; font-size: 1.1rem; color: #475569;">
                ¿Cómo organiza una computadora una lista de contactos, precios o puntuaciones de menor a mayor? La respuesta está en los <strong>Algoritmos de Ordenamiento</strong>. Hoy aprenderás el más clásico y pedagógico de todos: el <strong>Método de la Burbuja (Bubble Sort)</strong>. Aunque no es el más rápido para millones de datos, es el mejor para entender cómo funcionan los <strong>Arreglos (Vectores)</strong> y los <strong>Ciclos Anidados</strong>. En este tutorial de <strong>PSeInt</strong>, desglosaremos la lógica de comparar elementos adyacentes y «burbujear» los valores más grandes hacia el final de la lista.
            </p>
        </div>
    </header>

    <!-- 2. THEORETICAL CONCEPTS (LSI KEYWORDS SECTION) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Conceptos Clave: Vectores y Bucles Anidados
        </h2>
        <p style="margin-bottom: 20px;">El ordenamiento burbuja no es magia; es una coreografía precisa de datos. Necesitas dominar estos tres pilares:</p>
        <div style="display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));">
            <!-- Concept 1 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">Arreglos (Dimensiones)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    No podemos ordenar variables sueltas (a, b, c&#8230;) eficientemente. Necesitamos una estructura de datos que contenga una lista: un <strong>Arreglo</strong> o Vector. En PSeInt usamos <code>Dimension lista[N]</code> para acceder a los datos mediante índices (ej: <code>lista[1]</code>, <code>lista[2]</code>).
                </p>
            </div>
            <!-- Concept 2 -->
            <div style="background: white; border: 1px solid #e2e8f0; padding: 20px; border-radius: 8px;">
                <strong style="color: #2563eb; display: block; margin-bottom: 10px;">Ciclos Anidados (Para dentro de Para)</strong>
                <p style="font-size: 0.95rem; margin: 0;">
                    Una sola pasada por la lista no es suficiente para ordenarla. Necesitamos repetir el proceso de revisión varias veces. Esto requiere un bucle externo (que cuenta las pasadas) y un bucle interno (que compara los elementos).
                </p>
            </div>
        </div>
    </section>

    <!-- 3. LOGIC ANALYSIS -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Análisis del Algoritmo: ¿Por qué «Burbuja»?
        </h2>
        <p style="margin-bottom: 20px;">El nombre viene de la física: en un líquido, las burbujas de aire (elementos más «ligeros» o pequeños) tienden a subir, mientras que los elementos pesados se hunden.</p>
        <ul style="list-style: none; padding: 0; display: grid; gap: 15px;">
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dcfce7; color: #166534; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">ESTRATEGIA</span>
                <span>Recorrer el arreglo comparando pares adyacentes: <code>elemento[j]</code> contra <code>elemento[j+1]</code>.</span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #fef9c3; color: #854d0e; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">CONDICIÓN</span>
                <span>
                    Si el número actual es <strong>mayor</strong> que el siguiente (están en desorden), se realiza un <strong>Intercambio (Swap)</strong>.
                    <br><em>Lógica:</em> Si <code>A > B</code>, entonces invertimos posiciones.
                </span>
            </li>
            <li style="background: #ffffff; border: 1px solid #e2e8f0; padding: 15px; border-radius: 8px; display: flex; align-items: start; gap: 15px;">
                <span style="background: #dbeafe; color: #1e40af; padding: 2px 8px; border-radius: 4px; font-size: 0.85rem; font-weight: 700; margin-top: 3px;">REPETICIÓN</span>
                <span>Este proceso empuja el número más grande hacia el final de la lista en la primera vuelta. Se repite el ciclo N veces hasta que todo esté ordenado.</span>
            </li>
        </ul>
    </section>

    <!-- 4. MAIN CODE BLOCK -->
    <section style="margin-bottom: 50px;">
        <div style="display: flex; justify-content: space-between; align-items: end; margin-bottom: 15px;">
            <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin: 0; display: flex; align-items: center; gap: 10px;">
                Código Fuente (Algoritmo Estándar)
            </h2>
            <span style="font-size: 0.85rem; color: #64748b;">Archivo: Burbuja.psc</span>
        </div>
        <div style="background: #1e293b; border-radius: 8px; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,0.15);">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', 'Monaco', monospace; font-size: 0.95rem; color: #e2e8f0; line-height: 1.6; padding: 20px;"><code>Algoritmo OrdenamientoBurbuja
    // 1. Definición de Variables y Arreglo
    Definir num, i, j, aux, cantidad Como Entero;
    // Creamos un arreglo con capacidad suficiente (ej: 50 elementos)
    Dimension num[50];
    
    // 2. Entrada de Datos (Llenado del Vector)
    Escribir "¿Cuántos números desea ordenar? (Máx 50):";
    Leer cantidad;
    
    Escribir "--- Ingrese los números ---";
    Para i <- 1 Hasta cantidad Con Paso 1 Hacer
        Escribir "Número ", i, ":";
        Leer num[i];
    FinPara
    
    // 3. PROCESO DE ORDENAMIENTO (Burbuja)
    // El ciclo externo 'i' controla las pasadas
    Para i <- 1 Hasta cantidad - 1 Con Paso 1 Hacer
        
        // El ciclo interno 'j' compara elementos adyacentes
        Para j <- 1 Hasta cantidad - 1 Con Paso 1 Hacer
            
            // Comparación: ¿El actual es mayor que el siguiente?
            Si num[j] > num[j+1] Entonces
                // INTERCAMBIO (Swap) usando variable auxiliar
                aux <- num[j];
                num[j] <- num[j+1];
                num[j+1] <- aux;
            FinSi
            
        FinPara
        
    FinPara
    
    // 4. Salida de Datos (Vector Ordenado)
    Escribir "--------------------------------";
    Escribir "LISTA ORDENADA ASCENDENTE:";
    Para i <- 1 Hasta cantidad Hacer
        Escribir num[i], " " Sin Saltar;
    FinPara
    Escribir ""; // Salto de línea final
    
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 5. FLOWCHART PLACEHOLDER -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Diagrama de Flujo
        </h2>
        <div style="background: #f8fafc; border: 2px dashed #cbd5e1; border-radius: 8px; padding: 20px; text-align: center;">
            <img decoding="async" src="https://pseint.org/wp-content/uploads/2026/01/ordenamiento-burbuja-pseint-diagrama-flujo.png" />
        </div>
    </section>

    <!-- 6. COMMON ERRORS (SEO GOLDMINE) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            ⚠️ Errores Críticos al Ordenar
        </h2>
        <p style="margin-bottom: 20px;">El algoritmo de burbuja es propenso a un error fatal que detiene la ejecución:</p>
        <div style="display: grid; gap: 15px;">
            <!-- Error 1 -->
            <div style="background: #fff1f2; border-left: 4px solid #e11d48; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9f1239;">Error: Subíndice Fuera de Rango</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #881337;">
                    Si tu arreglo tiene 5 elementos y haces un ciclo <code>j Hasta 5</code>, cuando intentes acceder a <code>num[j+1]</code> estarás buscando la posición 6, que no existe. PSeInt se cerrará con error. <br>
                    <strong>Solución:</strong> El ciclo interno siempre debe ir hasta <code>Cantidad - 1</code>.
                </p>
            </div>
            <!-- Error 2 -->
            <div style="background: #fff7ed; border-left: 4px solid #f97316; padding: 15px; border-radius: 0 8px 8px 0;">
                <strong style="color: #9a3412;">Pérdida de Datos (Swap Incorrecto)</strong>
                <p style="font-size: 0.95rem; margin: 5px 0 0 0; color: #7c2d12;">
                    Intentar intercambiar sin <code>aux</code>: <br>
                    <code>A <- B</code> (A pierde su valor original)<br>
                    <code>B <- A</code> (B toma el valor de B)<br>
                    Resultado: Ambos números terminan valiendo lo mismo. <strong>Siempre usa una variable temporal.</strong>
                </p>
            </div>
        </div>
    </section>

    <!-- 7. OPTIMIZED CODE (CONTENT DEPTH) -->
    <section style="margin-bottom: 50px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Reto: Burbuja Mejorada (Más Eficiente)
        </h2>
        <p style="margin-bottom: 20px;">
            El método clásico es lento porque sigue comparando números que ya están ordenados al final. Esta versión optimizada reduce el rango del ciclo interno en cada pasada (<code>N-i</code>), ahorrando miles de operaciones en listas grandes.
        </p>
        <div style="background: #0f172a; border-radius: 8px; overflow: hidden; border: 1px solid #334155;">
            <div style="overflow-x: auto;">
<pre style="margin: 0; font-family: 'Consolas', monospace; font-size: 0.9rem; color: #94a3b8; line-height: 1.6; padding: 20px;"><code>Algoritmo BurbujaOptimizada
    Definir vector, n, i, j, aux Como Entero;
    Dimension vector[100];
    
    // ... (Suponer carga de datos aquí) ...
    n <- 5; // Ejemplo con 5 datos
    vector[1]<-10; vector[2]<-5; vector[3]<-3; vector[4]<-8; vector[5]<-1;
    
    // OPTIMIZACIÓN:
    // En cada vuelta 'i', el número más grande ya quedó al final.
    // No necesitamos revisarlo de nuevo.
    // El ciclo interno va hasta (n - i).
    
    Para i <- 1 Hasta n-1 Hacer
        Para j <- 1 Hasta n-i Hacer
            
            Si vector[j] > vector[j+1] Entonces
                aux <- vector[j];
                vector[j] <- vector[j+1];
                vector[j+1] <- aux;
            FinSi
            
        FinPara
    FinPara
    
    Escribir "Ordenado eficientemente.";
FinAlgoritmo</code></pre>
            </div>
        </div>
    </section>

    <!-- 8. EXPANDED FAQ (LONG TAIL SEO) -->
    <section style="margin-bottom: 60px;">
        <h2 style="font-size: 1.6rem; font-weight: 700; color: #1e293b; margin-bottom: 20px;">
            Preguntas Frecuentes (FAQ)
        </h2>
        
        <!-- FAQ 1 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Cómo lo ordeno de Mayor a Menor (Descendente)?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Es muy sencillo: solo invierte el operador de comparación en el condicional. Cambia <code>Si A > B</code> por <code>Si A < B</code>. El resto del código permanece idéntico.</div>
        </details>
        
        <!-- FAQ 2 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Qué complejidad tiene la Burbuja?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">Tiene una complejidad de <strong>O(n²)</strong>. Significa que si duplicas la cantidad de datos, el tiempo de proceso se cuadruplica. Es ineficiente para grandes volúmenes de datos, pero excelente para aprender lógica.</div>
        </details>
        
        <!-- FAQ 3 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Puedo ordenar textos (nombres)?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">¡Sí! PSeInt puede comparar cadenas de caracteres alfabéticamente. <code>"Ana" < "Beto"</code> es verdadero. Define el arreglo como <code>Caracter</code> y el algoritmo funcionará igual.</div>
        </details>
        
        <!-- FAQ 4 -->
        <details style="background: white; border: 1px solid #e2e8f0; border-radius: 8px; margin-bottom: 10px;">
            <summary style="padding: 15px; font-weight: 600; cursor: pointer; background: #f8fafc;">¿Qué pasa si la lista ya está ordenada?</summary>
            <div style="padding: 15px; color: #475569; border-top: 1px solid #e2e8f0;">El algoritmo estándar seguirá haciendo todas las comparaciones (ineficiente). Una versión más avanzada usa una variable "Bandera" (booleana) para detenerse si en una pasada no se hicieron intercambios.</div>
        </details>
    </section>

    <!-- 9. CTA -->
    <div style="background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%); padding: 40px; border-radius: 12px; text-align: center; color: white;">
        <h3 style="font-size: 1.5rem; font-weight: 800; margin: 0 0 10px 0; color: #fff;">¿Listo para el siguiente nivel?</h3>
        <p style="color: #cbd5e1; margin-bottom: 25px; font-size: 1.1rem;">Domina la lógica de programación con nuestra colección completa.</p>
        <a href="/ejercicios-resueltos/" style="display: inline-block; background-color: #3b82f6; color: white; padding: 12px 30px; border-radius: 50px; text-decoration: none; font-weight: 700; font-size: 1.1rem; transition: background 0.2s;" onmouseover="this.style.background='#2563eb'" onmouseout="this.style.background='#3b82f6'">
            Ver Más Ejercicios Resueltos
        </a>
    </div>

</article>
]]></content:encoded>
					
					<wfw:commentRss>https://pseint.org/ordenamiento-burbuja-pseint/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
