Você está na página 1de 16

24/11/2023, 09:15 ex1.

Folder ex1.1
1 printable files

(file list disabled)


ex1.1\main.c

1 #include <stdio.h>
2
3 void insertionSort(int arr[], int n)
4 {
5 int i, key, j;
6 for (i = 1; i < n; i++) {
7 key = arr[i];
8 j = i - 1;
9
10 while (j >= 0 && arr[j] > key) {
11 arr[j + 1] = arr[j];
12 j = j - 1;
13 }
14 arr[j + 1] = key;
15 }
16 printf("\ninsertionSort \n");
17 for(int i = 0; i < n; i++){
18 printf(" %d", arr[i]);
19 }
20 }
21
22 void swap(int *xp, int *yp)
23 {
24 int temp = *xp;
25 *xp = *yp;
26 *yp = temp;
27 }
28
29 void selectionSort(int arr[], int n)
30 {
31 int i, j, min_idx;
32
33 for (i = 0; i < n-1; i++)
34 {
35 min_idx = i;
36 for (j = i+1; j < n; j++)
37 if (arr[j] < arr[min_idx])
38 min_idx = j;
39
40 swap(&arr[min_idx], &arr[i]);
41 }
42
43 printf("\nselectionSort\n");
44 for(int i = 0; i < n; i++){
45 printf(" %d", arr[i]);
46 }
47 }
48
49 void bubble_sort(int arr[], int n) {

localhost:59803/093f59c1-f0be-45a9-884c-07ecdc91baaa/ 1/2
24/11/2023, 09:15 ex1.1
50 int c, d, t;
51
52 for (c = 0 ; c < n - 1; c++) {
53 for (d = 0 ; d < n - c - 1; d++) {
54 if (arr[d] > arr[d+1]) {
55 t = arr[d];
56 arr[d] = arr[d+1];
57 arr[d+1] = t;
58 }
59 }
60 }
61 printf("\nbubble_sort\n");
62 for(int i = 0; i < n; i++){
63 printf(" %d", arr[i]);
64 }
65 printf("\n");
66 }
67
68 int main(){
69 int n;
70 printf("Digite o tamanho do vetor: ");
71 scanf("%d", &n);
72 int vetor[n];
73 for(int i = 0; i < n; i++){
74 printf("Digite o número que você quer inserir no vetor:");
75 scanf("%d", &vetor[i]);
76 }
77 insertionSort(vetor, n);
78 selectionSort(vetor, n);
79 bubble_sort(vetor, n);
80
81 return 0;
82 }
83
84

localhost:59803/093f59c1-f0be-45a9-884c-07ecdc91baaa/ 2/2
24/11/2023, 09:15 ex1.2

Folder ex1.2
1 printable files

(file list disabled)


ex1.2\main.c

1 #include <stdio.h>
2
3 void insertionSort(int arr[], int n)
4 {
5 int i, key, j;
6 for (i = 1; i < n; i++) {
7 key = arr[i];
8 j = i - 1;
9
10 while (j >= 0 && arr[j] < key) {
11 arr[j + 1] = arr[j];
12 j = j - 1;
13 }
14 arr[j + 1] = key;
15 }
16 printf("\ninsertionSort \n");
17 for(int i = 0; i < n; i++){
18 printf(" %d", arr[i]);
19 }
20 }
21
22 void swap(int *xp, int *yp)
23 {
24 int temp = *xp;
25 *xp = *yp;
26 *yp = temp;
27 }
28
29 void selectionSort(int arr[], int n)
30 {
31 int i, j, min_idx;
32
33 for (i = 0; i < n-1; i++)
34 {
35 min_idx = i;
36 for (j = i+1; j < n; j++)
37 if (arr[j] > arr[min_idx])
38 min_idx = j;
39
40 swap(&arr[min_idx], &arr[i]);
41 }
42
43 printf("\nselectionSort\n");
44 for(int i = 0; i < n; i++){
45 printf(" %d", arr[i]);
46 }
47 }
48
49 void bubble_sort(int arr[], int n) {

localhost:59803/5bd6fb96-19a6-484c-8eb1-2934c7871932/ 1/2
24/11/2023, 09:15 ex1.2
50 int c, d, t;
51
52 for (c = 0 ; c < n - 1; c++) {
53 for (d = 0 ; d < n - c - 1; d++) {
54 if (arr[d] < arr[d+1]) {
55 t = arr[d];
56 arr[d] = arr[d+1];
57 arr[d+1] = t;
58 }
59 }
60 }
61 printf("\nbubble_sort\n");
62 for(int i = 0; i < n; i++){
63 printf(" %d", arr[i]);
64 }
65 printf("\n");
66 }
67
68 int main(){
69 int n;
70 printf("Digite o tamanho do vetor: ");
71 scanf("%d", &n);
72 int vetor[n];
73 for(int i = 0; i < n; i++){
74 printf("Digite o número que você quer inserir no vetor:");
75 scanf("%d", &vetor[i]);
76 }
77 insertionSort(vetor, n);
78 selectionSort(vetor, n);
79 bubble_sort(vetor, n);
80
81 return 0;
82 }
83
84

localhost:59803/5bd6fb96-19a6-484c-8eb1-2934c7871932/ 2/2
24/11/2023, 13:32 ex1.3

Folder ex1.3
1 printable files

(file list disabled)


ex1.3\main.c

1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <time.h>
4 #include <string.h>
5
6 void selectionSort(int arr[], int n, long *comparacoes, long *movimentacoes) {
7 int i, j, minIndex, temp;
8
9 for (i = 0; i < n - 1; i++) {
10 minIndex = i;
11 for (j = i + 1; j < n; j++) {
12 (*comparacoes)++; // Incrementa o número de comparações
13 if (arr[j] < arr[minIndex]) {
14 minIndex = j;
15 }
16 }
17 if (minIndex != i) {
18 temp = arr[i];
19 arr[i] = arr[minIndex];
20 arr[minIndex] = temp;
21 (*movimentacoes) += 3; // Incrementa o número de movimentações (3 trocas)
22 }
23 }
24 }
25
26 void insertionSort(int arr[], int n, long *comparacoes, long *movimentacoes) {
27 int i, chave, j;
28
29 for (i = 1; i < n; i++) {
30 chave = arr[i];
31 j = i - 1;
32
33 while (j >= 0 && arr[j] > chave) {
34 (*comparacoes)++; // Incrementa o número de comparações
35 arr[j + 1] = arr[j];
36 (*movimentacoes)++; // Incrementa o número de movimentações
37 j = j - 1;
38 }
39 arr[j + 1] = chave;
40 (*movimentacoes)++; // Incrementa o número de movimentações
41 }
42 }
43
44 void medirDesempenho(int *valores, int tamanho, char *tipoOrdenacao) {
45 int *copiaValores = (int *)malloc(tamanho * sizeof(int));
46 for (int i = 0; i < tamanho; ++i) {
47 copiaValores[i] = valores[i];
48 }
49

localhost:59803/a45d2fe1-6ee8-4f3e-b319-14274180e5c6/ 1/2
24/11/2023, 13:32 ex1.3
50 clock_t inicio, fim;
51 double tempoExecucao;
52 long comparacoes = 0, movimentacoes = 0;
53
54 inicio = clock();
55 if (strcmp(tipoOrdenacao, "Selecao") == 0) {
56 selectionSort(copiaValores, tamanho, &comparacoes, &movimentacoes);
57 } else if (strcmp(tipoOrdenacao, "Insercao") == 0) {
58 insertionSort(copiaValores, tamanho, &comparacoes, &movimentacoes);
59 } else {
60 printf("Algoritmo de ordenação não está disponível\n");
61 free(copiaValores);
62 return;
63 }
64 fim = clock();
65
66 tempoExecucao = ((double)(fim - inicio)) / CLOCKS_PER_SEC;
67
68 printf("Tipo de ordenacao: %s\n", tipoOrdenacao);
69 printf("Tempo de execucao: %f segundos\n", tempoExecucao);
70 printf("Numero de comparacoes: %ld\n", comparacoes);
71 printf("Numero de movimentacoes: %ld\n\n", movimentacoes);
72
73 free(copiaValores);
74 }
75
76 #include <stdio.h>
77 #include <stdlib.h>
78
79 int main(int argc, char *argv[]) {
80 if (argc != 2) {
81 printf("Uso: %s <nome_do_arquivo>\n", argv[0]);
82 return 1;
83 }
84
85 FILE *arquivo = fopen(argv[1], "r");
86 if (arquivo == NULL) {
87 printf("Erro ao abrir o arquivo.\n");
88 return 1;
89 }
90
91 int tamanho;
92 fscanf(arquivo, "%d", &tamanho);
93
94 int *valores = (int *)malloc(tamanho * sizeof(int));
95
96 for (int i = 0; i < tamanho; i++) {
97 fscanf(arquivo, "%d", &valores[i]);
98 }
99
100 fclose(arquivo);
101
102 medirDesempenho(valores, tamanho, "Selecao");
103 medirDesempenho(valores, tamanho, "Insercao");
104
105 free(valores);
106
107 return 0;
108 }
109

localhost:59803/a45d2fe1-6ee8-4f3e-b319-14274180e5c6/ 2/2
24/11/2023, 13:05 ex1.4

Folder ex1.4
1 printable files

(file list disabled)


ex1.4\main.c

1 #include <stdio.h>
2 #include <string.h>
3
4 typedef struct {
5 char nome[50];
6 int idade;
7 } Pessoa;
8
9 // Função de comparação para ordenação
10 int compararPessoas(const void *a, const void *b) {
11 Pessoa *p1 = (Pessoa *)a;
12 Pessoa *p2 = (Pessoa *)b;
13
14 // Compara pelo nome
15 int comparacaoNomes = strcmp(p1->nome, p2->nome);
16 if (comparacaoNomes != 0) {
17 return comparacaoNomes;
18 } else {
19 // Se os nomes forem iguais, compara pela idade
20 return p1->idade - p2->idade;
21 }
22 }
23
24 void ordenarCrescentePorSelecao(Pessoa vetor[], int tamanho) {
25 int i, j, minIndex;
26 Pessoa temp;
27
28 for (i = 0; i < tamanho - 1; i++) {
29 minIndex = i;
30 for (j = i + 1; j < tamanho; j++) {
31 if (compararPessoas(&vetor[j], &vetor[minIndex]) < 0) {
32 minIndex = j;
33 }
34 }
35 if (minIndex != i) {
36 temp = vetor[i];
37 vetor[i] = vetor[minIndex];
38 vetor[minIndex] = temp;
39 }
40 }
41 }
42
43 void ordenarDecrescentePorSelecao(Pessoa vetor[], int tamanho) {
44 int i, j, maxIndex;
45 Pessoa temp;
46
47 for (i = 0; i < tamanho - 1; i++) {
48 maxIndex = i;
49 for (j = i + 1; j < tamanho; j++) {

localhost:59803/1146848c-f43a-431a-9a71-22d5d0ae323f/ 1/3
24/11/2023, 13:05 ex1.4
50 if (compararPessoas(&vetor[j], &vetor[maxIndex]) > 0) {
51 maxIndex = j;
52 }
53 }
54 if (maxIndex != i) {
55 temp = vetor[i];
56 vetor[i] = vetor[maxIndex];
57 vetor[maxIndex] = temp;
58 }
59 }
60 }
61
62 void ordenarCrescentePorInsercao(Pessoa vetor[], int tamanho) {
63 int i, j;
64 Pessoa chave;
65
66 for (i = 1; i < tamanho; i++) {
67 chave = vetor[i];
68 j = i - 1;
69
70 while (j >= 0 && compararPessoas(&vetor[j], &chave) < 0) {
71 vetor[j + 1] = vetor[j];
72 j = j - 1;
73 }
74 vetor[j + 1] = chave;
75 }
76 }
77
78 void ordenarDecrescentePorInsercao(Pessoa vetor[], int tamanho) {
79 int i, j;
80 Pessoa chave;
81
82 for (i = 1; i < tamanho; i++) {
83 chave = vetor[i];
84 j = i - 1;
85
86 while (j >= 0 && compararPessoas(&vetor[j], &chave) > 0) {
87 vetor[j + 1] = vetor[j];
88 j = j - 1;
89 }
90 vetor[j + 1] = chave;
91 }
92 }
93
94 int main() {
95 Pessoa pessoas[] = {
96 {"Maria", 25},
97 {"Joao", 30},
98 {"Ana", 20},
99 {"Joao", 25},
100 {"Maria", 30}
101 };
102 int tamanho = sizeof(pessoas) / sizeof(pessoas[0]);
103
104 ordenarCrescentePorSelecao(pessoas, tamanho);
105 printf("Ordenacao Crescente por Selecao:\n");
106 for (int i = 0; i < tamanho; i++) {
107 printf("%s - %d\n", pessoas[i].nome, pessoas[i].idade);
108 }
109 printf("\n");

localhost:59803/1146848c-f43a-431a-9a71-22d5d0ae323f/ 2/3
24/11/2023, 13:05 ex1.4
110
111 ordenarDecrescentePorSelecao(pessoas, tamanho);
112 printf("Ordenacao Decrescente por Selecao:\n");
113 for (int i = 0; i < tamanho; i++) {
114 printf("%s - %d\n", pessoas[i].nome, pessoas[i].idade);
115 }
116 printf("\n");
117
118 ordenarCrescentePorInsercao(pessoas, tamanho);
119 printf("Ordenacao Crescente por Insercao:\n");
120 for (int i = tamanho - 1; i >= 0; i--) {
121 printf("%s - %d\n", pessoas[i].nome, pessoas[i].idade);
122 }
123 printf("\n");
124
125 ordenarDecrescentePorInsercao(pessoas, tamanho);
126 printf("Ordenacao Decrescente por Insercao:\n");
127 for (int i = tamanho - 1; i >= 0; i--) {
128 printf("%s - %d\n", pessoas[i].nome, pessoas[i].idade);
129 }
130 printf("\n");
131
132 return 0;
133 }
134

localhost:59803/1146848c-f43a-431a-9a71-22d5d0ae323f/ 3/3

Você também pode gostar