Vai al contenuto principale
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
  • Italiano ‎(it)‎
    Deutsch ‎(de)‎ English ‎(en)‎ Español - Internacional ‎(es)‎ Français ‎(fr)‎ Italiano ‎(it)‎ Português - Brasil ‎(pt_br)‎
  • Chiudi
    Attiva/disattiva input di ricerca
  • Acessar

CCM0128 - Computação II (2025i)

  1. Home
  2. Corsi
  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

Aggregazione dei criteri
Data limite: domenica, 27 aprile 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 aprile 2025, 22:08
  • S03.tar.gz S03.tar.gz
    15 aprile 2025, 22:08
◄ S02 Mergesort com menos acessos à memória
S04 Partição de K&R ►

Blocchi

Salta Navigazione
  • Home

    • e-Disciplinas

      • I miei corsi

      • Tag

      • Ricerca

      • PaginaSobre

      • PaginaHelp Desk e Contato

      • PaginaGuia

    • I miei corsi

    • Corsi

      • 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

              • Introduzione

              • Exercícios propostos em sala

                • CompitoS03 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

Blocchi supplementari

Ospite (Login)
Powered by Moodle