that_one_nigga_you_k

teste de algoritmo

May 6th, 2024
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.39 KB | None | 0 0
  1. #include <raylib.h>
  2. #include <vector>
  3. #include <iostream>
  4.  
  5. // Função para mesclar os dois subvetores
  6. void merge(std::vector<int>& arr, int l, int m, int r) {
  7.     int i, j, k;
  8.     int n1 = m - l + 1;
  9.     int n2 = r - m;
  10.  
  11.     // Cria vetores temporários
  12.     std::vector<int> L(n1), R(n2);
  13.  
  14.     // Copia os dados para os vetores temporários L[] e R[]
  15.     for (i = 0; i < n1; i++)
  16.         L[i] = arr[l + i];
  17.     for (j = 0; j < n2; j++)
  18.         R[j] = arr[m + 1 + j];
  19.  
  20.     // Mescla os vetores temporários de volta para o vetor arr[l..r]
  21.     i = 0; // Índice inicial do primeiro subvetor
  22.     j = 0; // Índice inicial do segundo subvetor
  23.     k = l; // Índice inicial do subvetor mesclado
  24.     while (i < n1 && j < n2) {
  25.         if (L[i] <= R[j]) {
  26.             arr[k] = L[i];
  27.             i++;
  28.         } else {
  29.             arr[k] = R[j];
  30.             j++;
  31.         }
  32.         k++;
  33.     }
  34.  
  35.     // Copia os elementos restantes de L[], se houver
  36.     while (i < n1) {
  37.         arr[k] = L[i];
  38.         i++;
  39.         k++;
  40.     }
  41.  
  42.     // Copia os elementos restantes de R[], se houver
  43.     while (j < n2) {
  44.         arr[k] = R[j];
  45.         j++;
  46.         k++;
  47.     }
  48. }
  49.  
  50. // Função principal que ordena arr[l..r] usando merge()
  51. void mergeSort(std::vector<int>& arr, int l, int r) {
  52.     if (l < r) {
  53.         // Encontra o meio
  54.         int m = l + (r - l) / 2;
  55.  
  56.         // Ordena a primeira e a segunda metade
  57.         mergeSort(arr, l, m);
  58.         mergeSort(arr, m + 1, r);
  59.  
  60.         // Mescla as metades ordenadas
  61.         merge(arr, l, m, r);
  62.     }
  63. }
  64.  
  65. int main() {
  66.     // Inicializa o Raylib
  67.     InitWindow(800, 600, "Merge Sort Visualization");
  68.  
  69.     // Cria um vetor de inteiros
  70.     std::vector<int> arr = {12, 11, 13, 5, 6, 7};
  71.  
  72.     // Chama a função mergeSort
  73.     mergeSort(arr, 0, arr.size() - 1);
  74.  
  75.     // Imprime o vetor ordenado
  76.     std::cout << "Vetor ordenado é \n";
  77.     for (int i = 0; i < arr.size(); i++)
  78.         std::cout << arr[i] << " ";
  79.     std::cout << "\n";
  80.  
  81.     // Loop principal do jogo
  82.     while (!WindowShouldClose()) {
  83.         BeginDrawing();
  84.         ClearBackground(BLACK);
  85.  
  86.         // Desenha o vetor na tela
  87.         for (int i = 0; i < arr.size(); i++) {
  88.             DrawRectangle(i * 40, GetScreenHeight() - arr[i] * 10, 30, arr[i] * 10, DARKGRAY);
  89.         }
  90.  
  91.         EndDrawing();
  92.     }
  93.  
  94.     // Fecha a janela
  95.     CloseWindow();
  96.  
  97.     return 0;
  98. }
Add Comment
Please, Sign In to add comment