Questões de Algoritmos de Ordenação (Algoritmos e Estrutura de Dados)

Limpar Busca

Qual característica do algoritmo QuickSort o torna eficiente para ordenação de grandes conjuntos de dados?

  • A Uso de comparações sequenciais sem divisões.
  • B Divisão recursiva em subproblemas menores.
  • C Eliminação de trocas entre elementos adjacentes.
  • D Ordenação direta sem memória auxiliar.
  • E Processamento exclusivo de dados ordenados.

Um algoritmo de ordenação é estável quando preserva a ordem relativa de elementos com chaves iguais. São exemplos de algoritmos de ordenação estáveis:

  • A InsertionSort, MergeSort e BubbleSort.
  • B CountingSort, HeapSort e SelectionSort.
  • C BubbleSort, QuickSort e MergeSort.
  • D SelectionSort, RadixSort e HeapSort.
  • E InsertionSort, BubbleSort e QuickSort.

Os algoritmos de ordenação são ferramentas essenciais na programação e em ciência da computação, pois permitem a organização eficiente de dados. A escolha do algoritmo apropriado depende de fatores como o tamanho da lista, a natureza dos dados e a necessidade de eficiência em termos de tempo e espaço.

Sendo assim, sobre os algoritmos de ordenação, podemos afirmar que

I. Bubble sort é um algoritmo de ordenação simples e muito eficiente para grande conjunto de dados.
II. Insertion sort é um algoritmo de ordenação utilizado para um pequeno número de elementos.
III. Quick sort é um algoritmo de ordenação mais rápido, que emprega a técnica de divisão e conquista.
IV. Selection sort recebe esse nome pela maneira como ele percorre o array ao longo das iterações: ele seleciona o menor elemento atual e o troca de lugar.

Estão corretas apenas as afirmativas

  • A I e IV.
  • B I, II e IV.
  • C I e III.
  • D II, III e IV.

Considere o algoritmo de ordenação para um vetor de inteiros em linguagem Javascript descrito a seguir:

sort = (array) => {         if (array.length <= 1) {                 return array;         }         const pivot = array[array.length - 1];         const left = [];         const right = [];         for (let i = 0; i < array.length - 1; i++) {                 if (array[i] < pivot) {                         left.push(array[i]);                   } else {
                        right.push(array[i]);                 }         }         return [...sort(left), pivot, ...sort(right)];
}

Considerando n como o tamanho do vetor, assinale a alternativa CORRETA que corresponde à complexidade média de tempo do algoritmo na notação Big-O:

  • A O(n).
  • B O(nlogn).
  • C O(logn).
  • D O(n²).
  • E O(2n).

Durante a análise e o desenvolvimento de sistemas no Tribunal de Justiça do Estado de Rondônia (TJRO), é essencial garantir a eficiência das operações de armazenamento e recuperação de dados. Uma das formas de otimizar essas operações é por meio de algoritmos de ordenação e busca. O conhecimento sobre a complexidade de algoritmos e a escolha da estrutura de dados mais adequada para um determinado problema impacta diretamente no desempenho do sistema. Sobre a complexidade dos algoritmos de ordenação, busca e respectivas estruturas de dados, assinale a afirmativa INCORRETA.

  • A O algoritmo QuickSort tem uma complexidade média de O(n log n).
  • B As tabelas hash oferecem uma busca com complexidade O(1) no pior caso.
  • C O algoritmo de ordenação Bubble Sort tem complexidade O(n²) no pior caso.
  • D A busca binária exige que o conjunto de dados esteja ordenado previamente.
  • E As listas encadeadas não permitem busca eficiente, pois exigem percorrimento sequencial.