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. int main() {
  64. // Parte 1: Exibir nomes e matrículas
  65. printf("Alunos:\n");
  66. printf("Endryo Tavares - 202051054689\n");
  67. printf("Pedro Guilherme - 202308418858\n");
  68. printf("Pedro Vanderlei - 202402821865\n");
  69.  
  70. // Parte 2: Geração e Ordenação de Vetor
  71. int arr[100];
  72. int comparisons = 0;
  73. generateRandomArray(arr, 100);
  74.  
  75. // Calcula o tempo de execução
  76. clock_t start, end;
  77. start = clock();
  78.  
  79. // Realizando Selection Sort
  80. printf("\nUtilizando Selection Sort para ordenação...\n");
  81. selectionSort(arr, 100, &comparisons);
  82.  
  83. end = clock();
  84. double time_spent = (double)(end - start) / CLOCKS_PER_SEC;
  85.  
  86. // Parte 3: Apresentar resultados
  87. printf("Vetor ordenado: ");
  88. for (int i = 0; i < 100; i++) {
  89. printf("%d ", arr[i]);
  90. }
  91. printf("\nComparações realizadas: %d\n", comparisons);
  92. printf("Tempo de execução: %f segundos\n", time_spent);
  93.  
  94. // Parte 4: Construção da Árvore Binária
  95. struct Node* root = NULL;
  96. for (int i = 0; i < 100; i++) {
  97. root = insert(root, arr[i]);
  98. }
  99.  
  100. // Finalização
  101. printf("\n\nAgradecemos a presença de todos!\n");
  102.  
  103. return 0;
  104. }
Success #stdin #stdout 0s 5288KB
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


Agradecemos a presença de todos!