A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Busque o menor elemento no vetor Troque sua posição com o primeiro Repita a operação a partir do segundo elemento, até que reste apenas um elemento a ser.

Apresentações semelhantes


Apresentação em tema: "Busque o menor elemento no vetor Troque sua posição com o primeiro Repita a operação a partir do segundo elemento, até que reste apenas um elemento a ser."— Transcrição da apresentação:

1 Busque o menor elemento no vetor Troque sua posição com o primeiro Repita a operação a partir do segundo elemento, até que reste apenas um elemento a ser ordenado Ordenação por Seleção 4153214532 41532 14532 12534 12534 1235412345 12354 12345

2 #include int menorP(int v[], int p, int n) { int i; int menor = p; for (i=p+1;i<n;i++) { if (v[menor] > v[i]) menor = i; } return(menor); } int main() { int tam = 7, pmen, aux, i; int v[] = {9,3,12,20,1,30,8}; for (i=0; i<(tam-1); i++) { /*busco a posição do menor elemento do sub- vetor*/ pmen = menorP(v, i, tam); /*troco com o primeiro do sub-vetor*/ aux = v[i]; v[i] = v[pmen]; v[pmen] = aux; }

3 Ordenação por Inserção Em cada passo, a partir de i = 2 – Apanhe o i-ésimo item da seqüência-fonte – Insira no lugar apropriado da seqüência-destino

4 Ordenação por Inserção #include void insere(int valor, int v[], int ult) { int i; i = ult - 1; while ((i>=0) && (v[i] > valor)) { /*desloco à esquerda*/ v[i+1] = v[i]; i--; } /*aqui vou inserir*/ v[i+1] = valor; } int main() { int tam = 7; int v[] = {9,3,12,20,1,30,8}; int i; for (i=1; i<tam; i++) insere(v[i], v, i); }

5 Método da Bolha Para cada elemento no vetor, de trás para frente – Varra o vetor até este elemento, trocando de ordem os elementos for a de ordem, de 2 em 2 41532 1453214532 1453214352143521432514325143251342513425132451324513245123451234512345

6 Método da Bolha #include int main() { int tam = 7; int v[] = {9,3,12,20,1,30,8}; int i,j; int aux; for (j=tam; j>1; j--) for (i=0; i<(j-1); i++) if (v[i] > v[i+1]) { /*troco*/ aux = v[i]; v[i] = v[i+1]; v[i+1] = aux; } #include int main() { int tam = 7; int v[] = {9,3,12,20,1,30,8}; int i,j; int aux; for (i=0; i<tam; i++) for (j=tam-1;j>i;j--) if (v[j] < v[j- 1]) { /*troco*/ aux = v[j]; v[j] = v[j- 1]; v[j-1] = aux; }

7 Números Aleatórios Em C isso realmente dói! rand() - gera uma seqüência de números pseudo-aleatórios, devolvendo um inteiro entre 0 e RAND_MAX (2147483647) Usa #include int main() { int i; for (i=0; i<5; i++) printf("%d\n",rand()); } Duas chamadas ao programa: $./a.out 1804289383 846930886 1681692777 1714636915 1957747793 $./a.out 1804289383 846930886 1681692777 1714636915 1957747793 São exatamente iguais

8 Números Aleatórios Solução: usar a hora do sistema para inicializar rand() (. time() - número de segundos desde 01/01/1970 srand() - estabelece um ponto de partida para a seqüência gerada por rand() #include int main() { int i, stime; long ltime; /*obtém a hora do sistema*/ ltime = time(NULL); stime = (unsigned) ltime/2; srand(stime); /*for (i=0; i<5; i++) printf("%d\n",rand()); } Duas chamadas ao programa: $./a.out 1329442131 336994392 1591944527 663004065 139970626 $./a.out 1024624969 148341346 96528913 276238504 2143218538 São diferentes

9 Números Aleatórios E se quisermos entre 0 e 3, por exemplo? Grandes coxambres... #include int main() { int i; int stime; long ltime; double numero; /*senão não cabe*/ /*obtém a hora do sistema*/ ltime = time(NULL); stime = (unsigned) ltime/2; srand(stime); /*imprimindo 5 aleatórios entre 0 e 3*/ for (i=0; i<5; i++) { numero = rand(); printf("%d\n",(int)(3*(numero-1)/RAND_MAX)); } Vale consultar: http://www.ime.usp.br/~p f/algoritmos/aulas/rando m.html

10 #include int main() { int i; int stime; long ltime; int numero; /*obtém a hora do sistema*/ ltime = time(NULL); stime = (unsigned) ltime/2; srand(stime); /*imprimindo 5 aleatórios entre 0 e 3*/ for (i=0; i<5; i++) { numero = rand() % 4; /* rand() % (n+1) */ printf("%d\n",numero)); } Outro modo de fazer é... Números Aleatórios


Carregar ppt "Busque o menor elemento no vetor Troque sua posição com o primeiro Repita a operação a partir do segundo elemento, até que reste apenas um elemento a ser."

Apresentações semelhantes


Anúncios Google