Lista de exercícios 1
Complexidade de Algoritmos e Algoritmos de Ordenação
1. Faça uma função que recebe como entrada uma matriz contendo duas colunas, a função retorna duas
listas, uma possuindo os valores na primeira coluna e outra possuindo os valores da segunda coluna.
2. Faça uma função que recebe como entrada uma matriz contendo duas colunas, a primeira coluna possui o
nome de um conjunto de pessoas e a segunda coluna a respectiva idade. A função retorna uma nova matriz
na qual as linhas estão ordenadas de acordo com as idades das pessoas. Proibido utilizar as funções sorted
e sort do Python! Você deve utilizar a lógica do algoritmo insertion sort na solução.
3. Faça uma função que recebe como entrada uma lista e retorna uma nova lista contendo a soma acumulada
dos valores dessa lista, ou seja, o elemento i da lista de saída é dado pela soma dos elementos 0 a i da lista
de entrada. Por exemplo, para a lista [5, 2, 4, 1 ,3, 2, 4] a lista retornada é [5, 7, 11, 12, 15, 17, 21]. A sua
função deve ter complexidade O(n).
4. Faça uma função que recebe como entrada duas listas de valores inteiros. A função verifica se as duas listas
possuem exatamente os mesmos elementos. Por exemplo, as listas [2, 6, 4, 8, 10, 3] e [10, 3, 2, 4, 6, 8]
possuem os mesmos elementos. Sua função deve ter complexidade de no máximo O(nlog(n)).
5. Em Python, podemos comparar dois caracteres para verificar a ordem que eles aparecem no alfabeto. Por
exemplo, ‘a’<’d’ retorna True. Faça uma função que recebe como entrada duas strings e retorna essas duas
strings ordenadas em ordem alfabética. Considere que as strings possuem somente letras do alfabeto
minúsculas e não possuem espaços. Adicionalmente, considere que duas strings com caracteres iguais
serão ordenadas em ordem crescente de tamanho. Por exemplo, “casa” é inserido antes de “casar”. Você
não pode utilizar funções prontas de ordenação do Python, e apenas caracteres individuais das strings
podem ser comparados (não a string toda).
* Dica: a string pode ser representada por uma lista na qual cada elemento é um caractere da string.
6. Faça uma função que recebe como entrada uma matriz contendo um número qualquer de colunas e um
índice c indicando uma coluna específica dessa matriz. A função retorna uma nova matriz na qual as linhas
estão ordenadas em ordem crescente da coluna c. Proibido utilizar as funções sorted e sort do Python!
Você deve utilizar a lógica do algoritmo insertion sort na solução.