quarta-feira, 22 de abril de 2015

Ordenação [Pt 3]: Função Sort (C++)

A maior parte das vezes, só queremos que o vetor esteja ordenado. Se for uma variável já existente de C++ (int, double, string etc), para a qual já existe um comparador padrão (dado dos inteiros ou duas strings, é possível comparar), basta chamar a função pro vetor.

#include <algorithm>
#include <vector>
#include <string>
using namespace std;

vector <char> v_char; //Vector de char
vector <string> v_str; //Vector de strings
int v_int[1000]; //Vetor de inteiros

int main() {
    int n; //n = tamanho do vetor

    sort(v_char.begin(), v_char.end());
    //Soh ordenar n elementos
    sort(v_str.begin(), v_str.begin() + n);
    sort(v_int, v_int + n);
}

Ordenação [Pt 2]: Mergesort e contando inversões

Para um vetor grande, não funciona um algoritmo O(n²). Precisamos de um melhor. Primeiro mostrarei a ideia e depois o tempo de execução.

Suponha que temos um vetor de tamanho N desordenado. Se ordenamos cada uma das metades separadamente, podemos juntar as metades em O(n = tamanho do vetor), certo? Explico melhor:

Ordenação [Pt 1]: Bubblesort e contando inversões

Ordenar um vetor é um problema famoso e que possui muitas soluções, algumas intuitivas ou não. Vamos começar com o pior método de ordenar, contextualizando:

Suponha que estamos em uma corrida de fórmula 1. Cada competidor começa em uma posição arbitrária, e termina em outra posição arbitrária.

domingo, 5 de abril de 2015

Editorial #1

Fala pessoal,

Pensei um pouco sobre alguns problemas recentemente e decidi fazer um editorial que pode ser útil caso alguém tivesse dificuldade em fazê-los depois. Para começar, escolhi dois problemas do URI Online Judge (que, na verdade, são originais de provas da maratona de programação ACM ICPC):

URI 1231: Palavras (link para o problema)
URI 1265: DJ da Computação (link para o problema)

quarta-feira, 1 de abril de 2015

Foi dado como atividade à nossa turma de POO o desenvolvimento de um projeto de consulta a hyperlinks. É possível armazenar urls, nome, data de criação, adicionar comentários e metatags para cada hyperlink, e buscar um destes usando através de qualquer um dos campos (comentários e metatags também).

Meu grupo (eu e mais uma pessoa) escolhemos armazenar tudo em banco de dados, e trabalhar com consultas. Como foi feito em Java com Netbeans, fiquei responsável pela comunicação com o banco, utilizando MySQL e a API JDBC, que tem um driver bem simples de usar. Sugiro a leitura desta apostila da Caelum, pela qual eu também me baseei bastante.