Ordenação dos elementos de um vector

Documentos relacionados
Programação II. Ordenação (sort) Bruno Feijó Dept. de Informática, PUC-Rio

C Sistema destinado à preparação para Concursos Públicos e Aprimoramento Profissional via INTERNET RACIOCÍNIO LÓGICO

Prova de Aferição de Matemática e Estudo do Meio Prova 26 2.º Ano de Escolaridade Braille/Entrelinha 1,5 sem figuras Critérios de Classificação

Prova elaborada pelo prof. Octamar Marques. Resolução da profa. Maria Antônia Conceição Gouveia.

2 Patamar de Carga de Energia

Todos os exercícios sugeridos nesta apostila se referem ao volume 2. MATEMÁTICA III 1 DETERMINANTES

3. CÁLCULO INTEGRAL EM IR

Propriedades das Linguagens Regulares

Prova de Aferição de Matemática e Estudo do Meio Prova 26 2.º Ano de Escolaridade Braille, Entrelinha 1,5 sem figuras Critérios de Classificação

Dados dois conjuntos A e B, uma função de A em B é uma correspondência que a cada elemento de A faz corresponder um e um só elemento de B.

Álgebra Linear e Geometria Analítica

Integrais Impróprios

- Departamento de Matemática Aplicada (GMA) Notas de aula Prof a. Marlene Dieguez Fernandez. Integral definida

4. APLICAÇÃO DA PROTEÇÃO DIFERENCIAL À PROTEÇÃO DE TRANSFORMADORES DE POTÊNCIA

Projeto do processador com ciclo longo

3 Teoria dos Conjuntos Fuzzy

Programação II. Pilhas (stacks) Bruno Feijó Dept. de Informática, PUC-Rio

Unidimensional pois possui apenas uma única dimensão

Uso da memória. Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores. Alocação estática da memória. Alocação estática da memória (2)

Cinemática de Mecanismos

Compiladores. Exemplo First/Follow. proc Follow(B N) Gramática LL(1) proc First(α: string of symbols) Observações First/Follow

Extrapolação de Richardson

Problemas e Algoritmos

ntexto finição presentação áfica ilização TempMed(input,output); Var Var Begin Begin readln(t1); readln(t1); readln(t2); readln(t2);

TRIGONOMETRIA PLANA E ESFÉRICA

1.1) Dividindo segmentos em partes iguais com mediatrizes sucessivas.

RESPOSTAS DA LISTA 2 - Números reais: propriedades algébricas e de ordem

Eletricidade Aplicada. Aulas Teóricas Professor: Jorge Andrés Cormane Angarita

Aula 5: Autômatos Finitos Remoção de Não-Determinismo

INTEGRAL DEFINIDO. O conceito de integral definido está relacionado com um problema geométrico: o cálculo da área de uma figura plana.

VETORES. Problemas Resolvidos

Hewlett-Packard O ESTUDO DA RETA. Aulas 01 a 05. Elson Rodrigues, Gabriel Carvalho e Paulo Luiz

Bateria de Exercícios Matemática II. 1 Determine os valores de x e y, sabendo que os triângulos ABC e DEF são semelhantes:

Álgebra Linear e Geometria Analítica D

UFF/GMA - Matemática Básica I - Parte II Notas de aula - Marlene

Material Teórico - Módulo Teorema de Pitágoras e Aplicações. Algumas demonstrações do Teorema de Pitágoras. Nono Ano

Análise de Algoritmos Gabarito da Primeira Prova

Degeneração. Exercício 1: Resolva o seguinte problema pelo método das duas fases: sujeito a

LINGUAGEM DE PROGRAMAÇÃO ESTRUTURADA CAPÍTULO 6 ARRAYS (VETORES E MATRIZES)

Comprimento de Curvas. Exemplo. Exemplos, cont. Exemplo 2 Para a cúspide. Continuação do Exemplo 2

UFF/GMA - Matemática Básica I - Parte II - Números reais Notas de aula - Marlene

Princípios de Projeto em Arquitetura

Programação Linear Introdução

Matemática Régis Cortes FUNÇÃO DO 2 0 GRAU

Usando a função Pedraria. Usando a tela de edição

INTEGRAIS DEFINIDAS. Como determinar a área da região S que está sob a curva y = f(x) e limitada pelas retas verticais x = a, x = b e pelo eixo x?

INTEGRAIS DEFINIDAS. Como determinar a área da região S que está sob a curva y = f(x) e limitada pelas retas verticais x = a, x = b e pelo eixo x?

MATEMÁTICA. Equações do Segundo Grau. Professor : Dêner Rocha. Monster Concursos 1

CONSTRUÇÃO DE ALGORITMOS E PROGRAMAS

Material Teórico - Módulo Teorema de Pitágoras e Aplicações. Algumas demonstrações do Teorema de Pitágoras - Parte 2. Nono Ano

Academus - Roteiro do Usuário. Sumário

Marcone Jamilson Freitas Souza. Departamento de Computação. Programa de Pós-Graduação em Ciência da Computação

Lista de Exercícios Vetores Mecânica da Partícula

MEDIÇÃO. Modelo 404. Perimetral Ajustável para Batente

Teoria da Computação. Unidade 3 Máquinas Universais (cont.) Referência Teoria da Computação (Divério, 2000)

Hierarquia de Chomsky

Material Teórico - Módulo Triângulo Retângulo, Leis dos Cossenos e dos Senos, Poĺıgonos Regulares. Lei dos Senos e Lei dos Cossenos - Parte 1

Alocação sequencial - Pilhas

STSE - Simulação e Teste de Sistemas Electrónicos Ano lectivo 2004/5-2º Exame - 12 de Fevereiro de 2005 Duração: 1ª parte 45 minutos.

UFF/GMA - Matemática Básica I - Parte II Notas de aula - Marlene

ESCOLA SECUNDÁRIA COM 3º CICLO D. DINIS 12º ANO DE ESCOLARIDADE DE MATEMÁTICA A Tema II Introdução ao Cálculo Diferencial II

Anexo I Registo especial. Registo especial da instituição financeira

Método Ferraz Maahs Solução para sistema de Equações.

8/6/2007. Dados os conjuntos: A={0,1} e B={a,b,c},

AULA 7 EFICIÊNCIA E EFETIVIDADE DE ALETAS

MATEMÁTICA II. Profa. Dra. Amanda Liz Pacífico Manfrim Perticarrari

o equipamento da embalagem e verificar os componentes Cabo de alimentação CA Folha de transporte/ Folha de transporte do cartão de plástico DVD-ROM

ESTATÍSTICA APLICADA. 1 Introdução à Estatística. 1.1 Definição

Lista de Exercícios Integração Numérica

1 Fórmulas de Newton-Cotes

Internação WEB TISS Economus 2009_03_B.doc. Manual de Atendimento - Internação

GEOMETRIA DESCRITIVA PASSO A PASSO PROF. JAIR ROBERTO BÄCHTOLD UDESC

LRE LSC LLC. Autômatos Finitos são reconhecedores para linguagens regulares. Se não existe um AF a linguagem não é regular.

A B C Para colocar letras nas figuras, escrevem-se as letras segundo o sentido contrário ao dos ponteiros do relógio.

Material Teórico - Módulo de Razões e Proporções. Proporções e Conceitos Relacionados. Sétimo Ano do Ensino Fundamental

Lic. Ciências da Computação 2009/10 Exercícios de Teoria das Linguagens Universidade do Minho Folha 6. δ

Apoio à Decisão. Aula 3. Aula 3. Mônica Barros, D.Sc.

Teoria dos Jogos. Prof. Maurício Bugarin Eco/UnB 2014-I. Aula 9 Teoria dos Jogos Maurício Bugarin. Roteiro

Fundamentos de Matemática I EFETUANDO INTEGRAIS. Licenciatura em Ciências USP/ Univesp. Gil da Costa Marques

Do programa... 2 Descobre o teu livro... 4

y m =, ou seja, x = Não existe m que satisfaça a inclinação.

WATERFLUX - MEDIDOR DE VAZÃO SEM NECESSIDADE DE TRECHOS RETOS - ALIMENTAÇÃO INTERNA (BATERIA) OU EXTERNA CA/CC

Árvore estritamente binária É uma árvore onde todos os nós que não são folha possuem dois filhos.

Resumo com exercícios resolvidos do assunto:

Manual de Utilização do UpLoad BR

1 Integral de Riemann-Sieltjes

push (c) pop () retorna-se c topo b a topo Figura 10.1: Funcionamento da pilha.

GRANDEZAS PROPORCIONAIS

Geometria Analítica e Álgebra Linear

Introdução à Integral Definida. Aula 04 Matemática II Agronomia Prof. Danilene Donin Berticelli

Aproximação de funções de Bessel

Hewlett-Packard O ESTUDO DO PONTO. Aulas 01 a 05. Elson Rodrigues, Gabriel Carvalho e Paulo Luiz

INE Fundamentos de Matemática Discreta para a Computação

PRÉ-REQUISITOS PARA O CÁLCULO

POLINÔMIOS. Definição: Um polinômio de grau n é uma função que pode ser escrita na forma. n em que cada a i é um número complexo (ou

Diogo Pinheiro Fernandes Pedrosa

E m Física chamam-se grandezas àquelas propriedades de um sistema físico

1 Integral Indefinida

Módulo 02. Sistemas Lineares. [Poole 58 a 85]

Transcrição:

Sumário Funções e vetores Menismo de pssgem dos vetores Aplição dos oneitos no desenvolvimento de funções de ordenção e de prour em vetores. Algoritmos de ordenção e de prour em vetores Algoritmo I: Bule-Sort Algoritmo II: Ordenção om prour do mínimo Prour inári, num vetor que estej ordendo Progrmção 2007/2008 DEEC-IST Ordenção dos elementos de um vetor Prolem: É neessário desenvolver um progrm que efetue ordenção de um onjunto de números, por ordem resente de vlores. Os números estão rmzendos num vetor. Considere que o vetor tem dimensão DIMV. Algoritmo: Ordenr os elementos de um vetor signifi ter de tror os elementos do vetor té que ondição de ordenção sej válid. Existem diversos lgoritmos que podem ser utilizdos n ordenção, uns mis efiientes (em termos de rpidez) do que outros. O estudo dos lgoritmos de ordenção e de prour, ssim omo o respetivo desempenho será relizdo n disiplin de Algoritmos e Estruturs de Ddos. Progrmção 2007/2008 DEEC-IST 2

Ordenção dos elementos de um vetor Ações: Ler os números pr um vetor Definir quntidde de números que é neessário rmzenr Definir dimensão do vetor Desenvolver o lgoritmo de ordenção Comprr dus posições do vetor Se [i] > [j] então tror os onteúdos Prr tro de onteúdos qundo todos os números estiverem ordendos Apresentr o resultdo Progrmção 2007/2008 DEEC-IST Ordenção dos elementos de um vetor Algoritmo I (Bule-Sort): Considerem-se os elementos do vetor v[ ] e use-se um vriável uxilir ux pr relizr tro Psso Psso 2 Psso V[] V[] ux V[] V[] ux V[] V[] ux Progrmção 2007/2008 DEEC-IST 4

Ordenção dos elementos de um vetor Algoritmo I (ont.): Psso 4 Como o vetor não está ordendo é neessário omeçr do iníio novmente. Psso Psso 6 V[] V[] ux V[] V[] ux V[] V[] ux Psso 7 Psso 8 V[] V[] ux V[] V[] ux Progrmção 2007/2008 DEEC-IST Ordenção dos elementos de um vetor Algoritmo I: Código (Versão ) /*-------------------------------------+ Progrm: Orden os elementos de um vetor de inteiros utilizndo o lgoritmo Bule Sort Vers o:.0, - Progrm sem funções Autor: B. Andrde d Cost Dt: 200/0/0 +-------------------------------------*/ #inlude <stdio.h> #define DIMV int min(void){ int v[dimv]; int orden, numvolts, i,numve; printf("leitur dos numeros \n"); printf(" f - fim\n MAX = %d \n", DIMV); /* Le o mximo de DIMV elementos */ for(i=0; i<dimv;++i){ printf("v[%d]=", i); if(0== snf("%d",&(v[i]))) rek; /* Se erro fim d leitur */ /* Por exemplo qundo o utilizdor rreg em f */ /* Numero de elementos no vetor */ numve=i; /* Cont o numero de volts o vetor */ numvolts=; orden=; while(orden == ){ printf("%d volt o vetor \n", numvolts); orden=0; Progrmção 2007/2008 DEEC-IST 6

Ordenção dos elementos de um vetor Algoritmo I: Código (Cont.) for(i=0; i<(numve-); ++i) if(v[i]>v[i+]){/* tro */ int ux; ux=v[i+]; v[i+]=v[i]; v[i]=ux; /* E neessrio verifir todos mis um vez */ orden=; ++numvolts; /* Apresent o resultdo */ printf("\n"); for(i=0; i<numve; ++i) printf("v[%d]=%d\n", i, v[i]); if(numve == 0) printf("vetor Vzio \n"); printf("fim."); return 0; Síd do progrm: Leitur dos numeros f - fim MAX = v[0]=4 v[]= v[2]=2 v[]= v[4]=0 v[]=f volt o vetor 2 volt o vetor volt o vetor 4 volt o vetor volt o vetor v[0]=0 v[]= v[2]=2 v[]= v[4]=4 Fim. Progrmção 2007/2008 DEEC-IST 7 Ordenção dos elementos de um vetor Comentários reltivos o progrm nterior: A odifição do lgoritmo não é mis dequd. A leitur e nálise do progrm não é fáil, ddo que todo o ódigo foi olodo n função min. A utilizção do lgoritmo de ordenção noutro progrm é extremmente difíil ddo que o progrmdor tem sempre que se preoupr om os detlhes d solução nterior. Pr melhorr legiilidde do ódigo devem ser utilizds funções. É fáil onluir que o progrm seri mis fáil de nlisr e de esrever se tivessem sido utilizds funções. Progrmção 2007/2008 DEEC-IST 8

Funções e vetores Comentários reltivos o progrm nterior: No exemplo nterior é onveniente ter funções om rgumentos do tipo vetor pr: Ler os números do teldo pr o vetor. Esrever os elementos do vetor no erã. Testr se existe neessidde de tror o onteúdo de dus vriáveis do vetor. Tror dois elementos do vetor Ordenr os elementos do vetor. Colo-se então o prolem d definição de funções que reeem rgumentos do tipo vetor. Progrmção 2007/2008 DEEC-IST 9 Funções e vetores Em C os vetores são sempre pssdos por referêni. O nome do vetor é interpretdo omo o endereço do primeiro elemento do vetor. Qundo é neessário pssr um vetor omo rgumento de um função podem ser utilizds dus forms: Notção vetoril, exemplo do protótipo de um função que reee um vetor de inteiros (int v[]). int le_vetor(int v[], int dimv); Notção om pontdor Neste so é importnte lemrr que os elementos de um vetor estão ontíguos em memóri. O esso d um desses elementos pode ser relizdo utilizndo o endereço do primeiro elemento om operções sore os pontdores. Este ssunto será orddo num próxim ul. int le_vetor(int*v, int dimv); Progrmção 2007/2008 DEEC-IST

Funções e vetores É importnte slientr que um função não onsegue determinr por si só qul é o omprimento do vetor. É neessário pssr pr função o omprimento do vetor. Ou em lterntiv o número de elementos que têm informção útil. No exemplo seguinte int le_vetor(int v[], int dimv){... dimv - é um vriável lol à função que é utilizd pr gurdr dimensão do vetor. Esse vlor que deve ser forneido no momento em que função é invod. Note-se que, em prinípio, o ompildor não verifi se o ódigo de um função está efetur essos for d memóri que foi triuid o vetor. Por exemplo, eder à posição 20 qundo o vetor tem só elementos. Qundo isso ontee é usul que o progrm deixe de funionr. O progrmdor deve ter muito uiddo qundo efetu operções om vetores. Progrmção 2007/2008 DEEC-IST Funções e vetores N versão do ódigo que vi ser presentd, prourou-se dividir o progrm em funções de modo filitr esrit e respetiv ompreensão. As funções estão olods em três fiheiros: min. vet. Função prinipl do progrm. Contém s funções de leitur de um vetor (do teldo) e esrit no erã es_int. Contém s funções que efetum mnipulção de eslres do tipo int orden. função de omprção função de tro de ontéudo de vriáveis. Contém função de ordenção ule_sort Os fiheiros ontêm tmém omentários de modo filitr respetiv leitur e nálise. Progrmção 2007/2008 DEEC-IST 2

Funções e vetores Algoritmo I: Código (Fiheiro min.) /*-------------------------------------+ Progrm: (fiheiro: min.) Orden os elementos de um vetor de inteiros utilizndo o lgoritmo Bule Sort Vers o: 2.0, - Progrm om funções Autor: B. Andrde d Cost Dt: 200/0/0 +-------------------------------------*/ #inlude <stdio.h> #define DIMV #define ORDEM_CRES /* Aqui podemos utilizr fiheiros de inlude om prototipos */ extern int le_vetor(hr nome[], int vint[], int dimvi); extern void es_vetor(hr nome[], int vint[], int dimvi); extern int ule_sort(int vint[], int dimvi, int odr); int min(void){ int v[dimv]; int numelemv; Progrmção 2007/2008 DEEC-IST Funções e vetores Algoritmo I: Código (Fiheiro min.) printf("algoritmo ule sort \n"); printf("leitur dos numeros \n"); printf(" f - fim\n MAX = %d \n", DIMV); /* Le o mximo de DIMV elementos */ numelemv = le_vetor("", v, DIMV); /* Orden o vetor, ordem sendente */ ule_sort(v, numelemv, ORDEM_CRES); printf("\n"); if(numelemv>0){ /* Apresent o resultdo só os numelemv elementos */ printf("vetor Ordendo \n"); es_vetor("",v, numelemv); else printf("vetor Vzio \n"); printf("fim."); return 0; Progrmção 2007/2008 DEEC-IST 4

Funções e vetores Algoritmo I: Código (Fiheiro vet.) /*-------------------------------------------- Fiheiro: vet. Contem s funoes: le_vetor : Le um vetor inteiros do teldo es_vetor : Esreve um vetor de inteiros no er Dependênis: Nenhum Versão: 2.0, - Progrm om funções Autor: B. Andrde d Cost Dt: 200/0/0 +--------------------------------------------*/ Progrmção 2007/2008 DEEC-IST Funções e vetores Algoritmo I: Código (Fiheiro vet.) /*--------------------------------------------- Funo: le_vetor Argumentos: nome - String om o nome do vetor que deve preer no er vint - vetor de int que vi reeer os vlores dimvi - dimenso do vetor Retorn: Quntidde de numeros no vetor +----------------------------------------------*/ int le_vetor(hr nome[], int vint[], int dimvi){ int i; for(i=0; i<dimvi;++i){ printf("%s[%d]=", nome, i); if(snf("%d",&(vint[i]))==0) rek; /* Se erro fim d leitur */ /* Por exemplo qundo o utilizdor rreg em f */ return i; Progrmção 2007/2008 DEEC-IST 6

Funções e vetores Algoritmo I: Código (Fiheiro vet.) /*--------------------------------------------- Funo: es_vetor Argumentos: nome - String om o nome do vetor que deve preer no er vint - vetor de int que tem os vlores dimvi - dimenso do vetor ou numero de elementos serem imprimidos +---------------------------------------------*/ void es_vetor(hr nome[], int vint[], int dimvi){ int i; for(i=0; i<dimvi; ++i) printf("%s[%d]=%d\n", nome, i, vint[i]); /* Fim do fiheiro vet. */ Progrmção 2007/2008 DEEC-IST 7 Funções e vetores Algoritmo I: Código (Fiheiro orden.) /*-------------------------------------------- Fiheiro: orden. Contem s funoes: ule_sort : Reee um vetor e orden-o. E possivelespeifir o tipo de ordeno Dependênis: So neessáris s funoes int ompr_ints (int x, int y); void tro_ints (int *x, int *y) Versão: 2.0, - Progrm om funções Autor: B. Andrde d Cost Dt: 200/0/0 +--------------------------------------------*/ extern int ompr_ints(int x, int y); extern void tro_ints(int*x, int*y); Progrmção 2007/2008 DEEC-IST 8

Funções e vetores Algoritmo I: Código (Fiheiro orden.) int ule_sort(int vint[], int dimvi, int odr){ int i, orden=; if((odr!= )&&(odr!=-)) return 0; while(orden == ){ orden=0; for(i=0; i<(dimvi-); ++i) if(ompr_ints(vint[i], vint[i+]) == odr){/* tro */ tro_ints(&(vint[i]),&(vint[i+])); /* E neessrio verifir mis um vez */ orden=; return ; Progrmção 2007/2008 DEEC-IST 9 Funções e vetores Algoritmo I: Código (Fiheiro es_int.) /*-------------------------------------------- Fiheiro: eslr. Contem s funoes que mnipulm eslres do tipo int ompr_ints : Compr s vriveis x e y, devolve se x > y devolve 0 de x se igul y devolve - se x < y tro_ints :Tro o onteudo de dus vriveis Dependenis: Nenhum Versão: 2.0, - Progrm om funções Autor: B. Andrde d Cost Dt: 200/0/0 +--------------------------------------------*/ Progrmção 2007/2008 DEEC-IST 20

Funções e vetores Algoritmo I: Código (Fiheiro es_int.) /*--------------------------------------------- Funo: ompr_ints Argumentos: x e y - vriveis do tipo inteiro Retorn: devolve se x > y devolve 0 se x e igul y devolve - se x < y +----------------------------------------------*/ int ompr_ints(int x, int y){ if(x>y) return ; if(x== y) return 0; return-; Progrmção 2007/2008 DEEC-IST 2 Funções e vetores Algoritmo I: Código (Fiheiro es_int.) /*-------------------------------------------- Funo: tro_ints Argumentos: x e y - pontdores pr s vriveis Retorn: void +----------------------------------------------*/ void tro_ints(int*x, int*y){ int ux; ux=*x; *x=*y; *y=ux; /* Fim do fiheiro es_int. */ Resultdo do progrm: Algoritmo ule sort Leitur dos numeros f - fim MAX = [0]=2 []= [2]=4 []= [4]=0 []=f Vetor Ordendo [0]=0 []= [2]=2 []= [4]=4 Fim. Progrmção 2007/2008 DEEC-IST 22

Ordenção dos elementos de um vetor Algoritmo II: Considere-se um vetor de dimensão n. Utilizem-se s vriáveis w = n e p = ; Determin o menor dos w elementos do vetor e respetiv posição, k. De seguid tror o ontéudo d posição p do vetor om o onteúdo d posição k onde está o vlor mínimo. Repete-se os pssos nteriores, pr os w- elementos do vetor om p = p+ Psso Psso 2 Psso V[] V[] ux V[] V[] ux V[] V[] ux Progrmção 2007/2008 DEEC-IST 2 Ordenção dos elementos de um vetor Exeríio II: Esrev um função que relize o lgoritmo II de ordenção. Utilize, se possível, s funções que já form desenvolvids pr o progrm de teste do ule sort. Esrev função min que permit testr função que desenvolver. Progrmção 2007/2008 DEEC-IST 24

Ordenção dos elementos de um vetor Algoritmo II: Código d função int orden_lg2(int vint[], int dimvi, int odr){ int i, j; if((odr!= )&&(odr!=-)) return 0; for(i=0; i<(dimvi-);++i) { int minimo = vint[i]; int pos_minimo = i; for(j=i+; j<dimvi; ++j){ if(ompr_ints(minimo, vint[j]) == odr){ pos_minimo=j; minimo=vint[j]; tro_ints(&(vint[i]),&(vint[pos_minimo])); return ; Progrmção 2007/2008 DEEC-IST 2 Prour inári num vetor Prolem: Pretende-se desenvolver um função que relize prour inári num vetor de inteiros. Assume-se que o vetor está ordendo. Est ondição é fundmentl pr plição do lgoritmo. O lgoritmo de prour inári onsiste nos seguintes pssos: Iniilmente é feito um esso um elemento do vetor. A esolh do indie do elemento pode ser por exemplo i=n/2 em que N é dimensão do vetor se estiver totlmente preenhido. Aqui podem oorrer três situções: O elemento prourdo está n posição i e omo onsequêni foi enontrdo e prour termin. Ou o elemento está no intervlo [0; i[ Ou pode estr no intervlo ]i+; N-] Como o vetor está ordendo deve então esolher-se o intervlo onde o elemento pode estr e divide-se esse novo intervlo o médio. Este proesso termin qundo o último intervlo tiver um únio elemento. Progrmção 2007/2008 DEEC-IST 26

Prour inári num vetor Exemplo Enontrr o índie do vlor x= no vetor ordendo que se segue: 0 2 4 6 7 8 9 2 4 2 4 6 7 8 20 2 2 24 2 28 29 Progrmção 2007/2008 DEEC-IST 27