Este documento presenta dos métodos de ordenamiento: el método de burbuja y el método quicksort. El método de burbuja ordena valores de menor a mayor mediante comparaciones iterativas. El método quicksort es uno de los algoritmos más eficientes para ordenar datos, dividiendo el arreglo en subconjuntos mediante un pivote y ordenando de forma recursiva.
1. INSTITUTO TECNOLOGICO SUPERIOR DE FELIPE CARRILLO
INFORME TECNICO
Ing. Sistemas computacionales
Docente : Niels Henryk Aranda Cuevas
Alumna: Rene Jesus Sosa Arana
Gr upo: 3er “A”
Unidad 5
Métodos de ordenamiento
2. Burbujas
#include <iostream>
using namespace std;
//Metodo Burbuja
int main()
{
int s,temp,i,j;
int a[20];
cout<<"Ingrese la cantidad de numeros a ordenar: ";
cin>>s;
cout<<"Ingrese "<<s<<" elementos ";
for(i=0;i<s;i++)
cin>>a[i];
for(i=s-2;i>=0;i--) {
for(j=0;j<=i;j++)
{
if(a[i]>a[j+1])
{
temp=a[j]; j=indice
a[j]=a[j+1];
a[j+1]=temp;
}
3. }
}
cout<<"Despues del ordenamiento: ";
for(i=0;i<s;i++)
cout<<a[i];
return 0;s
}
El método de ordenamiento burbuja su función es ordenar los valores asignados de menor
a mayor Dado que solo usa comparaciones para operar elementos, se lo considera un
algoritmo de comparación, siendo el más sencillo de implementar.
Quicksort
#include <iostream>
using namespace std;
#define ARRAY_SIZE 5
void PrintArray(int* array, int n);
void QuickSort(int* array, int startIndex, int endIndex);
int SplitArray(int* array, int pivotValue, int startIndex, int endIndex);
void swap(int &a, int &b);
int main(void)
{
int array[ARRAY_SIZE];
int i;
for( i = 0; i < ARRAY_SIZE; i++)
{
cout<<"Enter an integer : ";
cin>>array[i];
}
4. cout<<endl<<"The list you input is : "<<endl;
PrintArray(array, ARRAY_SIZE);
QuickSort(array,0,ARRAY_SIZE - 1);
cout<<endl<<"The list has been sorted, now it is : "<<endl;
PrintArray(array, ARRAY_SIZE);
cin.get();
cin.get();
return 0;
}
void swap(int &a, int &b)
{
int temp;
temp = a;
a = b;
b = temp;
}
void PrintArray(int* array, int n)
{
int i;
for( i = 0; i < n; i++) cout<<array[i]<<'t';
}
void QuickSort(int* array, int startIndex, int endIndex)
{
int pivot = array[startIndex];
int splitPoint;
if(endIndex > startIndex)
{
splitPoint = SplitArray(array, pivot, startIndex, endIndex);
array[splitPoint] = pivot;
QuickSort(array, startIndex, splitPoint-1);
5. QuickSort(array, splitPoint+1, endIndex);
}
}
int SplitArray(int* array, int pivot, int startIndex, int endIndex)
{
int leftBoundary = startIndex;
int rightBoundary = endIndex;
while(leftBoundary < rightBoundary)
{
while( pivot < array[rightBoundary]
&& rightBoundary > leftBoundary)
{
rightBoundary--;
}
swap(array[leftBoundary], array[rightBoundary]);
while( pivot >= array[leftBoundary]
&& leftBoundary < rightBoundary)
{
leftBoundary++;
}
swap(array[rightBoundary], array[leftBoundary]);
return leftBoundary;
}
Quicksort es uno de los algoritmos por excelencia utilizados para ordenar secuencias de
datos Este método es una mejora sustancial del método de intercambio directo y recibe el
nombre de Quick Sort por la velocidad con que ordena los elementos del arreglo. La idea
central de este algoritmo consiste en los siguiente: Se toma un elemento x de una posición
6. cualquiera del arreglo. Se trata de ubicar a x en la posición correcta del arreglo, de tal
forma que todos los elementos que se encuentran a su izquierda sean menores o iguales a
x y todos los elementos que se encuentren a su derecha sean mayores o iguales a x. Se
repiten los pasos anteriores pero ahora para los conjuntos de datos que se encuentran a
la izquierda y a la derecha de la posición correcta de x en el arreglo.