fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. // Estrutura para o nó da árvore binária
  6. struct Node {
  7. int data;
  8. struct Node* left;
  9. struct Node* right;
  10. };
  11.  
  12. // Funções para inserção da árvore binária
  13. struct Node* newNode(int data) {
  14. struct Node* node = (struct Node*)malloc(sizeof(struct Node));
  15. node->data = data;
  16. node->left = node->right = NULL;
  17. return node;
  18. }
  19.  
  20. struct Node* insert(struct Node* node, int data) {
  21. if (node == NULL) return newNode(data);
  22. if (data < node->data)
  23. node->left = insert(node->left, data);
  24. else
  25. node->right = insert(node->right, data);
  26. return node;
  27. }
  28.  
  29. // Função de ordenação: Selection Sort
  30. void selectionSort(int arr[], int n, int* comparisons) {
  31. int i, j, min_idx, temp;
  32. for (i = 0; i < n - 1; i++) {
  33. min_idx = i;
  34. for (j = i + 1; j < n; j++) {
  35. (*comparisons)++;
  36. if (arr[j] < arr[min_idx])
  37. min_idx = j;
  38. }
  39. temp = arr[min_idx];
  40. arr[min_idx] = arr[i];
  41. arr[i] = temp;
  42. }
  43. }
  44.  
  45. // Função para gerar um vetor de inteiros únicos aleatórios
  46. void generateRandomArray(int arr[], int size) {
  47. int i, num, exists;
  48. for (i = 0; i < size; i++) {
  49. do {
  50. exists = 0;
  51. num = rand() % 1000 + 1;
  52. for (int j = 0; j < i; j++) {
  53. if (arr[j] == num) {
  54. exists = 1;
  55. break;
  56. }
  57. }
  58. } while (exists);
  59. arr[i] = num;
  60. }
  61. }
  62.  
  63. // Função para imprimir a árvore binária em ordem
  64. void printInOrder(struct Node* node) {
  65. if (node != NULL) {
  66. printInOrder(node->left); // Visita o filho à esquerda
  67. printf("%d ", node->data); // Imprime o valor do nó
  68. printInOrder(node->right); // Visita o filho à direita
  69. }
  70. }
  71.  
  72. int main() {
  73. // Parte 1: Exibir nomes e matrículas
  74. printf("Alunos:\n");
  75. printf("Endryo Tavares - 202051054689\n");
  76. printf("Pedro Guilherme - 202308418858\n");
  77. printf("Pedro Vanderlei - 202402821865\n");
  78.  
  79. // Parte 2: Geração e Ordenação de Vetor
  80. int arr[100];
  81. int comparisons = 0;
  82. generateRandomArray(arr, 100);
  83.  
  84. // Calcula o tempo de execução
  85. clock_t start, end;
  86. start = clock();
  87.  
  88. // Realizando Selection Sort
  89. printf("\nUtilizando Selection Sort para ordenação...\n");
  90. selectionSort(arr, 100, &comparisons);
  91.  
  92. end = clock();
  93. double time_spent = (double)(end - start) / CLOCKS_PER_SEC;
  94.  
  95. // Parte 3: Apresentar resultados
  96. printf("Vetor ordenado: ");
  97. for (int i = 0; i < 100; i++) {
  98. printf("%d ", arr[i]);
  99. }
  100. printf("\nComparações realizadas: %d\n", comparisons);
  101. printf("Tempo de execução: %f segundos\n", time_spent);
  102.  
  103. // Parte 4: Construção da Árvore Binária
  104. struct Node* root = NULL;
  105. for (int i = 0; i < 100; i++) {
  106. root = insert(root, arr[i]);
  107. }
  108.  
  109. // Parte 5: Impressão da árvore binária
  110. printf("\nÁrvore Binária em ordem: ");
  111. printInOrder(root);
  112. printf("\n");
  113.  
  114. // Finalização
  115. printf("\n\nAgradecemos a presença de todos!\n");
  116.  
  117. return 0;
  118. }
  119.  
  120.  
Success #stdin #stdout 0.01s 5280KB
stdin
Standard input is empty
stdout
Alunos:
Endryo Tavares - 202051054689
Pedro Guilherme - 202308418858
Pedro Vanderlei - 202402821865

Utilizando Selection Sort para ordenação...
Vetor ordenado: 12 13 23 28 43 44 59 60 61 68 70 85 88 92 95 124 125 136 168 171 173 179 199 212 227 230 277 282 306 314 316 325 328 336 337 363 365 368 369 371 374 379 384 387 394 400 404 414 422 427 430 435 457 493 506 527 531 538 540 541 546 568 571 583 585 587 650 652 677 691 730 737 740 751 755 764 778 783 785 789 794 796 803 809 815 847 858 863 874 887 896 916 920 926 927 930 933 957 981 997 
Comparações realizadas: 4950
Tempo de execução: 0.000000 segundos

Árvore Binária em ordem: 12 13 23 28 43 44 59 60 61 68 70 85 88 92 95 124 125 136 168 171 173 179 199 212 227 230 277 282 306 314 316 325 328 336 337 363 365 368 369 371 374 379 384 387 394 400 404 414 422 427 430 435 457 493 506 527 531 538 540 541 546 568 571 583 585 587 650 652 677 691 730 737 740 751 755 764 778 783 785 789 794 796 803 809 815 847 858 863 874 887 896 916 920 926 927 930 933 957 981 997 


Agradecemos a presença de todos!