Ir para o conteúdo principal
e-Disciplinas
  • Disciplinas »
    2026 2025 2024 2023 2022 2021 2020 2019 2018 2017 2016 2015 2014 2013 2012 AACCs/FFLCH Pró-Reitoria de Pós-Graduação Outros
  • Suporte »
    Acesso Perfis Ouvintes Docentes Criação de Disciplinas da USP Documentação HelpDesk e Contato Guia de uso Sobre
  • Português - Brasil ‎(pt_br)‎
    Deutsch ‎(de)‎ English ‎(en)‎ Español - Internacional ‎(es)‎ Français ‎(fr)‎ Italiano ‎(it)‎ Português - Brasil ‎(pt_br)‎
  • Fechar
    Alternar entrada de pesquisa
  • Acessar

CCM0128 - Computação II (2025i)

  1. Início
  2. Ambientes
  3. 2025
  4. RUSP
  5. CCM
  6. 0128.2025i
  7. Exercícios propostos em sala
  8. S03 Ordenação de datas

S03 Ordenação de datas

Condições de conclusão
Vencimento: domingo, 27 abr. 2025, 23:59

O programa MergeRows.java.  O programa MergeRows.java (dado abaixo) ordena as linhas de uma matriz dada usando uma coluna especificada como a "chave de ordenação" (se a matriz é \(m[][]\), o programa rearranja os elementos de $m[]$). O algoritmo de ordenação usado em MergeRows.java é o mergesort. Para entender o uso de MergeRows.java, veja o arquivo fonte MergeRows.java.

Exemplos de execução.  Seguem alguns exemplos de execução de MergeRows.java.

$ cat m.txt
2 1 1 1
2 3 3 1
2 1 3 1
1 2 1 3
3 3 3 1
1 1 3 1
$ java-introcs MergeRows 6 4 0 < m.txt
1 2 1 3
1 1 3 1
2 1 1 1
2 3 3 1
2 1 3 1
3 3 3 1
$ java-introcs MergeRows 6 4 1 < m.txt
2 1 1 1
2 1 3 1
1 1 3 1
1 2 1 3
2 3 3 1
3 3 3 1
$ java-introcs MergeRows 6 4 2 < m.txt
2 1 1 1
1 2 1 3
2 3 3 1
2 1 3 1
3 3 3 1
1 1 3 1
$ java-introcs MergeRows 6 4 3 < m.txt
2 1 1 1
2 3 3 1
2 1 3 1
3 3 3 1
1 1 3 1
1 2 1 3
$

O programa SortDates.java.  Considere o algoritmo de ordenação de datas em SortDates.java, dado abaixo.

Exemplo de execução

$ cat dates.txt
27
16/12/2023
16/1/2024
17/11/2023
17/12/2023
17/12/2024
15/1/2023
15/11/2024
16/1/2023
15/1/2025
16/11/2025
16/12/2024
17/1/2024
17/11/2025
15/11/2025
16/1/2025
16/11/2023
16/11/2024
17/11/2024
15/12/2025
17/1/2023
15/12/2023
15/12/2024
17/1/2025
17/12/2025
16/12/2025
15/11/2023
15/1/2024
$ java-introcs SortDates < dates.txt
15/1/2023
16/1/2023
17/1/2023
15/11/2023
16/11/2023
17/11/2023
15/12/2023
16/12/2023
17/12/2023
15/1/2024
16/1/2024
17/1/2024
15/11/2024
16/11/2024
17/11/2024
15/12/2024
16/12/2024
17/12/2024
15/1/2025
16/1/2025
17/1/2025
15/11/2025
16/11/2025
17/11/2025
15/12/2025
16/12/2025
17/12/2025
$

O programa SeveralDates.java.  Você pode usar o programa SeveralDates.java para gerar certas listas de datas para executar mais experimentos com SortDates.java.

Exercício.  Argumente clara e precisamente por que o algoritmo de ordenação de datas implementado em SortDates.java funciona corretamente.

Sugestão.  Podemos denotar por \(D_1\leq D_2\) o fato que a data $D_1$ é igual ou anterior à data $D_2$ cronologicamente. Ademais, podemos denotar por $D_1\leq_{\text{dm}}D_2$ se $D_1$ é igual ou anterior à $D_2$, ignorando o ano. Isto é, se $D_1=(d_1,m_1,a_1)$ e $D_2=(d_2,m_2,a_2)$, então $D_1\leq_{\text{dm}}D_2$ se e só se $m_1<m_2$ ou $m_1=m_2$ e $d_1\leq d_2$. Podemos definir analogamente a relação $\leq_{\text{d}}$ ignorando o mês e ano: $D_1\leq_{\text{d}}D_2$ se e só se $d_1\leq d_2$.  (Uma curiosidade: estritamente falando, as relações $\leq_{\text{dm}}$ e $\leq_{\text{d}}$ não são relações de ordem sobre datas (por quê?).  Elas são o que se chama de pré-ordem ou quase-ordem.)

O que se pede é que se prove que SortDates.java ordena o vetor dates[] de acordo com a ordem $\leq$, com três chamadas de MergeRows.sort(). O que podemos dizer sobre o vetor dates[] depois de cada chamada de MergeRows.sort()? Por quê?

Observação.  SortDates.java, como implementado, tem tempo de execução proporcional a \(N\log N\).  Usando $\textit{counting sort}$ (em vez de mergesort), é possível tornar o algoritmo em SortDates.java em um algoritmo $\textit{linear}$ (supondo que não vamos ordenar datas arbitrariamente distantes no futuro).

  • S03 S03
    15 abril 2025, 22:08 PM
  • S03.tar.gz S03.tar.gz
    15 abril 2025, 22:08 PM
◄ S02 Mergesort com menos acessos à memória
S04 Partição de K&R ►

Blocos

Pular Navegação
  • Início

    • e-Disciplinas

      • Meus Ambientes

      • Tags

      • Pesquisar

      • PáginaSobre

      • PáginaHelp Desk e Contato

      • PáginaGuia

    • Meus Ambientes

    • Ambientes

      • 2025

        • CENA

        • EACH

        • ECA

        • EE

        • EEFE

        • EEFERP

        • EEL

        • EERP

        • EESC

        • EP

        • ESALQ

        • FAU

        • FCF

        • FCFRP

        • FD

        • FDRP

        • FE

        • FEA

        • FEARP

        • FFCLRP

        • FFLCH

        • FM

        • FMBRU

        • FMRP

        • FMVZ

        • FO

        • FOB

        • FORP

        • FSP

        • FZEA

        • IAG

        • IAU

        • IB

        • ICB

        • ICMC

        • IEB

        • IEE

        • IF

        • IFQSC

        • IFSC

        • IGc

        • IME

        • IO

        • IP

        • IPEN

        • IQ

        • IQSC

        • IRI

        • HRAC

        • MAC

        • MAE

        • MP

        • MZ

        • RUSP

          • PRG

          • CCM

            • CCM0118-235-2025

            • CCM0214-2025

            • CCM0113-235-2025

            • CCM0212-234-2025

            • CCM0211-2025

            • CCM0213-2025

            • CCM0218-234-2025*

            • CCM0218-234-2025

            • CCM0114-235-2025

            • Biologia 1 - 2025

            • CCM0215-134-2025

            • CCM0121-2025

            • CCM0221-2025

            • 0128.2025i

              • Geral

              • Exercícios propostos em sala

                • TarefaS03 Ordenação de datas

              • Exercícios-programa

            • CCM0122-134-2025

            • CCM0223-133-2025

            • CCM0222-133-2025

            • CCM0224-133-2025

            • CCM0124-134-2025

          • IAL

          • DPG

          • PDPD

          • PDPD

          • PDPD

          • PDPD

          • PDPD2025

          • PDPD2025

          • Ciclo PDPD2025

      • 2026

      • 2024

      • 2023

      • 2022

      • 2021

      • 2020

      • 2019

      • 2018

      • 2017

      • 2016

      • 2015

      • 2014

      • 2013

      • 2012

      • Grupos de Estudos, Pesquisa e Outros

      • PRPG - Pró-Reitoria de Pós-Graduação

      • STI

Blocos suplementares

Você acessou como visitante (Acessar)
Fornecido por Moodle