[Estructura de datos] Algoritmo de ajuste descendente del tipo de pila

Análisis de algoritmos

Para comprender el algoritmo de ajuste descendente, primero debemos comprender la definición del montón en la estructura de datos (no el montón en la memoria).
1. Concepto: La estructura de datos del montón es un objeto de matriz, que puede considerarse como una estructura de árbol binaria completa.
2. Clasificación del montón: montón máximo: el valor de cada nodo padre es mayor que el del nodo hijo. Montón mínimo: el valor de cada nodo principal es menor que el del nodo secundario

La función del algoritmo de ajuste descendente es convertir cualquier montón en el montón más pequeño o en el montón más grande clasificando el algoritmo de arriba hacia abajo.

Pasos: (Tome el montón mínimo como ejemplo)
1. Elija un valor mínimo mínimo de los hijos izquierdo y derecho del nodo raíz
2. Compare los datos actuales que deben ajustarse con el valor mínimo mínimo

①, mayor que min: intercambiar con min, continuar ejecutando el paso 1 desde la posición después del intercambio;
②, menor o igual que min: fin

Código

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

//向下调整算法---以最小堆为例
void Shift_down(int *arr, int n, int curpos) //n-数组大小   curpos-需要调整的位置
{
    
    
	//左孩子
	int child = 2 * curpos + 1;
	while (child < n)
	{
    
    
		if (child + 1 < n&&arr[child + 1] < arr[child])
			child++;
		//向下比较
		if (arr[child] < arr[curpos])
		{
    
    
			int tmp = arr[child];
			arr[child] = arr[curpos];
			arr[curpos] = tmp;

			//继续向下比较
			curpos = child;
			child = 2 * curpos + 1;
		}
		else
			break;
	}

}


void test()
{
    
    
	int arr[] = {
    
     10,5,3,8,7,6 };
	Shift_down(arr, sizeof(arr) / sizeof(arr[0]), 0);
}

int main()
{
    
    
	test();
	return 0;
}

Resultado de depuración

Caso de prueba: matriz [10, 5, 3, 8, 7, 6]

Resultados de la salida del pronóstico: [3, 5, 6, 8, 7, 10]

Resultado de salida real:
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_43962381/article/details/112147016
Recomendado
Clasificación