Ir para conteúdo
Fórum Script Brasil

Igor Terriaga

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre Igor Terriaga

Igor Terriaga's Achievements

0

Reputação

  1. Pessoal, alguém sabe porque não ta dando certo a implementação do QuickSort dessa forma? #include <stdio.h> #include <stdlib.h> #include <conio.h> #define TAM 8 void QuickSort(int vetor[], int inicio, int fim); int main() { int vet[TAM]; int i; printf("Informe os elementos do vetor a serem ordenados: \n"); for(i = 0; i < TAM; i++) { scanf("\n%4d\n", vet[i]); } printf("\nElementos desordenados: \n"); for(i = 0; i < TAM; i++) { printf("%4d", vet[i]); } printf("\nElementos ordenados: \n"); QuickSort(vet, 0, TAM); for(i = 0; i < TAM; i++) { printf("%4d", vet[i]); } return 0; } void QuickSort(int vetor[], int inicio, int fim) { int i, j, x, aux; i = inicio; j = fim; x = vetor[(i + j) / 2]; do { while(vetor[i] < x) i++; while(vetor[j] > x) j--; if(i <= j) { aux = vetor[i]; vetor[i] = vetor[j]; vetor[j] = aux; i++; j--; } }while(i <= j); if(inicio < j) QuickSort(vetor, inicio, j); if(i < fim) QuickSort(vetor, i, fim); }
  2. Pessoal, to tentando resolver uma questão aqui, fiz algumas coisas mas ainda preciso de ajuda... Segue a questão e o código: Numa cidade há n pessoas. Sabe-se que existe m pares de pessoas que são amigos na cidade. Sabendo que se A ´e amigo de B e B ´e amigo de C, então A é amigo de C. Qual o tamanho do maior grupo de amigos quando: n = 10, m = 12, e os pares são = (1,2), (3,1), (3,4), (5,4), (3,5), (4,6), (5,2), (2,1), (7,10), (1,2), (9,10), (8,9)? (Dica: resolve-se usando conjuntos union-find). Código ->> #include <stdio.h> #include <stdlib.h> /* Você possui N nós, inicialmente desconectados. Serão adicionadas M arestas, e após cada operação, deseja-se saber quais vértices pertencem a qual componente conexa do grafo. Mais especificamente, as seguintes operações podem ser realizadas: Union(A, B): adicionar uma aresta entre A e B. Find(A): dizer em qual componente conexa está o vértice A. inicialmente temos parent[x] = x e rank[x] = 0 */ int find(int x,int []parent) { if (parent[x] == x) return x; return parent[x] = find(parent[x]); } void union(int a, int b, int []rank ) { int rank []; int x = find(a), y = find(b); if (x==y) return; if (rank[x] < rank[y]) { parent[x] = y; } else { parent[y] = x; if (rank[x] == rank[y]) rank[x]++; } } int main() { int n = 10, m=12; int parent []; int rank []; union (1,2); union (3,1); union (3,4); union (5,4); union (3,5); union (4,6); union (5,2); union (2,1); union (7,10); union (1,2); union (9,10); union (8,9) return 0; }
×
×
  • Criar Novo...