Estructura de datos primaria - clasificación

1. El concepto de clasificación

Ordenar es la operación de ordenar una serie de datos de acuerdo con reglas específicas.

Algoritmos de clasificación comunes

//排序实现的接口
void InsertSort(int* a,int n);   //插入排序

void ShellSort(int* a,int n);    //希尔排序

void SelectSort(int* a, int n);   // 选择排序

void AdjustDwon(int* a, int n, int root);
void HeapSort(int* a, int n);// 堆排序

// 冒泡排序
void BubbleSort(int* a, int n)

// 快速排序递归实现
// 快速排序hoare版本
int PartSort1(int* a, int left, int right);
// 快速排序挖坑法
int PartSort2(int* a, int left, int right);
// 快速排序前后指针法
int PartSort3(int* a, int left, int right);
void QuickSort(int* a, int left, int right);

// 快速排序 非递归实现
void QuickSortNonR(int* a, int left, int right)


// 归并排序递归实现
void MergeSort(int* a, int n)
// 归并排序非递归实现
void MergeSortNonR(int* a, int n)

// 计数排序
void CountSort(int* a, int n)

2. Implementación de clasificación común

1. Clasificación por inserción

inserción directa

El método de inserción directa es un método de ordenación por inserción simple, que inserta los elementos que se van a ordenar en una secuencia ordenada ordenada uno por uno para formar una nueva secuencia ordenada.

Es como insertar {3, 6, 1, 5} en {2, 4}, obtienes {1, 2, 3, 4, 5, 6}.

Entonces, ¿cómo se logra?

Características en línea

  •  1. Cuanto más cerca esté el elemento del pedido antes de la inserción, mayor será la eficiencia de inserción
  • 2. Complejidad del tiempo: O(N^2)
  • 3. Complejidad del espacio: O(1)
  • 4. Estabilidad: estable

Hill sort (clasificación incremental decreciente)

El método de clasificación de Hill consiste en seleccionar primero un número entero, dividir los elementos que se van a clasificar en varios grupos, dividir todos los elementos con distancias iguales en el mismo grupo y clasificar cada grupo de elementos.

Características de Hill Sort

  •  1. Hill sort es una optimización de la ordenación por inserción directa
  • 2. Cuando gap>1 está preordenado, el propósito es hacer que los elementos ordenados estén más cerca del orden.
  • 3. Complejidad del tiempo: O(N^1.3 - N^2)
  • 4. Estabilidad: Inestable

2. Clasificación de selección

Seleccione el más pequeño (el más grande) de los elementos que se ordenarán cada vez y colóquelo al principio de la secuencia hasta agotar todos los elementos.

clasificación por selección directa

La selección directa consiste en comparar los elementos a ordenar, seleccionar el más grande o el más pequeño y luego repetir la operación para los elementos restantes hasta que los elementos restantes sean 1 y la operación se detenga.

Características de la clasificación de selección directa

  • 1. La clasificación por selección directa es fácil de entender, pero la eficiencia no es muy buena y rara vez se usa en la práctica
  • 2. Complejidad del tiempo: O(N^2)
  • 3. Complejidad del espacio: O(1)
  • 4. Estabilidad: Inestable

 ordenar en montón

Heap sort es un algoritmo de clasificación diseñado utilizando la estructura de datos del montón, y es una especie de clasificación por selección. Recuerde construir montones grandes en orden ascendente y montones pequeños en orden descendente.

 Características de la clasificación en montón

  • 1. Heap sort usa el montón para seleccionar números, lo cual es mucho más eficiente.
  • 2. Complejidad del tiempo: O(N*logN)
  • 3. Complejidad del espacio: O(1)
  • 4. Estabilidad: inestable

3. Ordenar por intercambio

Intercambie el orden de los dos elementos según el resultado de la comparación de los dos elementos, moviendo el valor más grande al final y el valor más pequeño al frente.

Ordenamiento de burbuja

Características del tipo de burbuja

  •  1. La clasificación de burbujas es una clasificación muy fácil de entender.
  • 2. Complejidad del tiempo: O(N^2)
  • 3. Complejidad del espacio: O(1)
  • 4. Estabilidad: estable

ordenación rápida

Quicksort es un método de clasificación de intercambio de árboles binarios. Cualquier elemento se toma como valor de referencia, y luego el conjunto se divide en dos secuencias, la izquierda es menor que la derecha y se repite lo mismo.

Las formas comunes de dividir un intervalo en mitades izquierda y derecha según el valor base son:

  • 1. Versión Hoare
  • 2. Método de excavación
  • 3. Versión de puntero delantero y trasero.

4. Clasificación por fusión

Merge sort es ordenar las subsecuencias existentes y fusionar dos listas ordenadas en una sola lista ordenada.

Fusionar funciones de clasificación

  • 1. La desventaja de la fusión es que requiere una complejidad de espacio O(N).La idea de la clasificación por fusión es más para resolver el problema de la clasificación externa en el disco.
  • 2. Complejidad del tiempo: O(N*logN)
  • 3. Complejidad espacial: O(N)
  • 4. Estabilidad: estable

5. Clasificación no comparativa

Características de la clasificación no comparativa

  •  1. Cuando la clasificación de conteo se concentra en el rango de datos, la eficiencia es muy alta, pero el alcance y los escenarios aplicables son limitados.
  • 2. Complejidad del tiempo: O(MAX(N, rango))
  • 3. Complejidad espacial: O (rango)
  • 4. Estabilidad: estable

Supongo que te gusta

Origin blog.csdn.net/qq_59392324/article/details/122009954
Recomendado
Clasificación