DEV Community

Leo
Leo

Posted on

chris si ves esto abrelo

esa mamada no se parece, esta mal el pdo

Image description

main

// Tecnologico Superior De Jalisco
// Materia: Estructura de Datos
// Tema: Ordenamiento
// Autor: Christopher Jue Mora Sanchez
// Fecha: 5 de mayo 2024


#include <iostream>
#include <ctime>
#include "order.hpp"

using namespace std;

int main() {
  int n;
  char c;
  srand(time(NULL));
  cout << "Ingrese el tamaño del arreglo: ";
  cin >> n;
  int array[n];
  cout << "Arreglo original:" << endl;
  for (int i = 0; i < n; i++) {
    array[i] = (rand() % 10)*n;
    cout << array[i] << endl;
  }
  cout << "Elige el metodo de ordenamiento deseas para el arreglo (Q: Quicksort, H: Heapsort, M: Mergesort): ";
  cin >> c;
  Class obj;
  switch (c) {
    case 'Q':
      obj.quickSort(array, 0, n - 1);
      cout << "Arreglo Ordenado: ";
      for (int i = 0; i < n; i++) {
        cout << array[i] << " ";
      }
    break;
    case 'H':
      obj.heapSort(array, n);
      cout << "Arreglo Ordenado: ";
      for (int i = 0; i < n; i++) {
        cout << array[i] << " ";
      }
      break;
    case 'M': 
      obj.mergeSort(array, n, array, n);
      cout << "Arreglo Ordenado: "or;
      for (int i = 0; i < n; i++) {
        cout << array[i] << " ";
      }
      break;
    default:
      cout << "Opción de ordenamiento inválida." << endl;
  }
  return 0;
}
Enter fullscreen mode Exit fullscreen mode

order.cpp

#include "order.hpp"
#include <algorithm>
#include <iostream>

Class::Class()
{

};

Class::~Class(){

};

void Class::quickSort(int a[], int l, int r){
  int p = a[(l + r)/2];
  int i = l;
  int j = r;
  do {
    while(a[i] < p) i++;
    while(a[j] > p) j--;
    if(i <= j){
      std::swap(a[i], a[j]);
      i++;
      j--;
    }
  } while(i <= j);
  if(l < j) quickSort(a, l, j);
  if(i < r) quickSort(a, i, r);
}

int* Class::mergeSort(const int a[], int n, int *b, int m){
  int *c = new int[n + m];
  int i = 0, j = 0, k = 0;
  while(i < n && j < m){
    c[k] = a[i] < b[j] ? a[i++] : b[j++];
    k++;
  }
  while (i < n){
    c[k] = a[i];
    i++;
    k++;
  }
  while(j < m){
    c[k] = b[j];
    j++;
    k++;
  }
  return c;
}

void Class::heapSort(int a[], int n){
  int k;
    if(n > 1) {
      k = (n / 2);
      int l = k, r = n - k;
      heapSort(a, l);
      heapSort(a + l, r);
      int* lamda = mergeSort(a, l, a + l, r);
      for(int i = 0; i < n; i++) a[i] = lamda[i];
  }
}
Enter fullscreen mode Exit fullscreen mode

order.hpp

#ifndef order_hpp
#define order_hpp

#include <iostream>
#include <cstdlib>
#include <algorithm>

using namespace std;

class Class{
  public:
  int x;
  public:
    Class();
    ~Class();
    void quickSort(int a[], int l, int r);
    int* mergeSort(const int a[], int n, int *b, int m);
    void heapSort(int a[], int n);
};

#endif /* ordenamiento_hpp */
Enter fullscreen mode Exit fullscreen mode

Top comments (0)