Puntos y cubo de tipo Ver detalle ejemplos de la / min sencilla barril realización

En primer lugar, ¿cuál es el tipo de cubo

Bucket sort (Bucket especie) o el llamado cuadro de tipo es un algoritmo de clasificación, el principio es para ser asignado a un número limitado de matriz de cubo. Cada cubeta individual y luego ordenados (es posible reutilización o cualquier otro algoritmo de ordenación de forma recursiva continuar usando balde sorting).

Para ordenar los elementos de cubo, elegir el algoritmo de ordenación compara crucial para el rendimiento

En segundo lugar, la implementación

  1. Establecer una matriz cuantitativa como un cubo vacío.
  2. Buscar secuencia, y proyectar en un cubo correspondiente a.
  3. Cada uno no vaciar el cubo tipo.
  4. De la casa no es proyectos barril vacío y luego de vuelta a la secuencia original.

En tercer lugar, para lograr ejemplos

Pseudo-código:

function bucket-sort(array, n) is
  buckets ← new array of n empty lists
  for i = 0 to (length(array)-1) do
    insert array[i] into buckets[msbits(array[i], k)]
  for i = 0 to n - 1 do
    next-sort(buckets[i])
  return the concatenation of buckets[0], ..., buckets[n-1]

La distribución de los elementos en el cubo:

La distribución de los elementos en el cubo:

* De Wiki https://zh.wikipedia.org/wiki/ cubo especie

En cuarto lugar, los parámetros de rendimiento en el cubo especie

1, tiempo de complejidad

El peor tiempo de complejidad: la ( norte 2 ) O (n ^ 2)
la complejidad media de tiempo: la ( norte + k ) O (n + k)
complejidades de tiempo: la ( norte + k ) O (n + k)

2, la complejidad del espacio

El espacio peor complejidad: la ( norte k ) O (n \ cdot k)

3, es estable

estable

4, cualquier tipo adecuado de almacenamiento

almacenamiento secuencial y de la cadena de almacenamiento

En quinto lugar, la aplicación del código

El principio de la utilización de sub-barrilpuntos simples barril
enReducción de puntos de barrilEl tiempo para escribir ...

* Porción algoritmo de la referencia de
https://www.geeksforgeeks.org/bucket-sort-2/
* puntos principio barril de referencia de
https://mp.weixin.qq.com/s/qq8-anybC8aYX5dnyrXmwA

sección de algoritmos

void bucketSort(int arr[],int len)
{
    // 1 找到最大值
    int max = arr[0];
    for (int i = 1; i < len; i++)
    {
        if (arr[i] > max)
            max = arr[i];
    }
    // 2 找到最小值
    int min = arr[0];
    for (int i = 1; i < len; i++)
    {
        if (arr[i] < min)
            min = arr[i];
    }
    // 3 根据最大值和最小值创建桶
    int bucketNum = max/10 - min/10 + 1 ;
    vector<int> b[bucketNum];
    // 4 根据简单分桶,把元素放入桶中
    for (int i = 0; i < len; i++)
    {
        int bi = (arr[i] - min )/10;
        b[bi].push_back(arr[i]);
    }
    // 5 每个桶内单独排序
    for (int i = 0; i < bucketNum; i++)
    {
        if (b[i].size() > 0)    //当桶内元素大于0才排序
        {
            sort(b[i].begin(), b[i].end());
        }
    }
    // 6 将桶内的元素放入arr中
    int index = 0;
    for (int i = 0; i < bucketNum; i++)
    {
        for (int j = 0; j < b[i].size(); j++)
        {
            arr[index++] = b[i][j];
        }   
    }
}

sección de Ejemplos

http://www.huangjihao.com/index.php/archives/807

Publicado 35 artículos originales · ganado elogios 1 · vistas 1837

Supongo que te gusta

Origin blog.csdn.net/qq_40672635/article/details/104948630
Recomendado
Clasificación