O Bubble Sort é ruim, mas tem algoritmo pior?
Na verdade, existem várias outras soluções para este problema, mas resumidamente aqui está uma tabela comparando o tempo de complexidade de alguns algoritmos de ordenação:
알고리즘
처형
버블 정렬
오(n^2)
삽입 정렬
오(n^2)
선택 정렬
오(n^2)
힙 정렬
O(nlog_2n)
병합 정렬
O(nlog_2n)
퀵소트
오(log2n)
É bastante fácil de notar que de maneira geral os algoritmos de ordenação simples tem complexidade n^2, enquanto outros como Merge Sort n log_2 n, apesar da complexidade, cada um tem um desempenho melhor ou pior em cada caso. 마스...
버블 정렬이 무엇입니까?
답변 요청: ✨ dá ✨
답장: Stooge Sort와 같은 알고리듬이 존재합니다. E ele funciona da seguinte maneira: sua logica lembra o Bubble Sort, semper faz a comparação de posições do arranjo em pares, e procurando o maior elemento, porém implementado de forma recursiva.
O pseudocódigo dessa criaturinha é o seguinte:
Se o valor do primeiro item for maior do que o último:
trocar o primeiro e o último valor;
Se o arranjo possuir 3 elementos ou mais:
recursivamente chamar stooge sort com os primeiros 2/3 do arranjo;
recursivamente chamar stooge sort com os últimos 2/3 do arranjo;
recursivamente chamar stooge sort com os primeiros 2/3 do arranjo;
retornar arranjo;
C++ fica assim에서 구현:
void stoogeSort(int arr[], int left, int right){
if (left >= right) return;
if (arr[left] > arr[right]) swap(arr[left], arr[right]);
if ((right - left + 1) > 2){
int t = floor((right - left + 1)/3);
stoogeSort(arr, left, right - t);
stoogeSort(arr, left + t, right);
stoogeSort(arr, left, right - t);
}
}
O(n^2.7)의 복잡도는 버블 정렬보다 훨씬 더 복잡합니다. Olhando para os números, não parece ter tanta diferença de O(n^2) e O(n^2.7), certo?
Bom, pode não parecer tão pior, mas para isso precisamos testar 😄.
고환
Os testes foram executados em uma máquina com as seguintes configurações:
LSB Version: n/a
Distributor ID: ManjaroLinux
Description: Manjaro Linux
Release: 21.2.6
Codename: Qonos
-----------
Arquitetura: x86_64
Modo(s) operacional da CPU: 32-bit, 64-bit
Tamanhos de endereço: 43 bits physical, 48 bits virtual
Ordem dos bytes: Little Endian
CPU(s): 6
Lista de CPU(s) on-line: 0-5
ID de fornecedor: AuthenticAMD
Nome do modelo: AMD Ryzen 5 3500X 6-Core Processor
Família da CPU: 23
Modelo: 113
Thread(s) per núcleo: 1
Núcleo(s) por soquete: 6
Soquete(s): 1
Step: 0
Aumento de frequência: habilitado
CPU(s) scaling MHz: 87%
CPU MHz máx.: 4520,8979
CPU MHz mín.: 2200,0000
BogoMIPS: 7902.79
----------
MemTotal: 16356904 kB (a.k.a 16GB de ram :))
10, 100, 1000, 10.000, 100.000 및 1.000.000개의 숫자가 반복되고 순서대로 나열됩니다. Porém o Stooge Sort não colaborou, você pode ver os resultados no Github em números reais, neste arquivo e também neste mas o que vale a pena mencionar é que para ordenar o arranjo de 100.000 números o Stooge Sort levou 155662 segundos, convertendo isso dá mais ou menos 43 horas (vale a pena mencionar que o tempo medido é de processador, não de relógio), e devido a isto, os testes foram realizados apenas até o arranjo de 100.000 números. 버블 정렬에 관심이 있는 사용자는 32개의 순서로 정렬된 순서대로 정렬할 수 있습니다. É uma diferença enorme né?
Tendo dito isso, mostrar o gráfico comparando os tempos de todos os algoritmos é até sem graça... pois ele ficou um pouco esticado:
Basicamente o Stooge Sort é mais lento que todos os algoritmos na maioria dos cenários testados, e não é um pouco pior: na verdade é ridiculamente pior, apesar disso é um algoritmo interessante como objeto de estudo :), você pode ler mais sobre o Stooge nas references abaixo를 정렬합니다.
참조
https://www.ijitee.org/wp-content/uploads/papers/v8i12/L31671081219.pdf
https://is.muni.cz/th/gp4gz/bc.pdf
https://www.geeksforgeeks.org/
Reference
이 문제에 관하여(O Bubble Sort é ruim, mas tem algoritmo pior?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mateusmsouza/o-bubble-sort-e-ruim-mas-tem-algoritmo-pior-4j0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)