7.QuickSort
7.QuickSort
h"
#include "iostream"
using namespace System;
using namespace std;
template<typename T>
int particion(T* arr, int p, int r)
{
int x = arr[r];//pivote: ultimo elemento del arreglo
int i = p - 1;//indice de los menores
for (int j = p; j < r; j++)
{
if (arr[j] <= x)
{
i++;
swap(arr[i], arr[j]);
}
}
swap(arr[i + 1], arr[r]);
return i + 1;
}
template<typename T>
void quicksort(T* arr, int p, int r)
{
int q;
if (p < r)
{
q = particion(arr, p, r);
quicksort(arr, p, q - 1);
quicksort(arr, q + 1, r);
}
}
int main()
{
int arreglo[] = { 4,5,1,9,3,2 };
int n = 6;
quicksort<int>(arreglo, 0, n - 1);
cout << "Arreglo ordenado por quicksort" << endl;
for (int i = 0; i < n; i++)
{
cout << arreglo[i] << " ";
}
cin.ignore();
cin.get();
return 0;
}