Código de C/Visual C - Método de ordenamiento en Quicksort

Imágen de perfil

Método de ordenamiento en Quicksortgráfica de visualizaciones


C/Visual C

Actualizado el 09 de Enero del 2015 por Rafael (Creado el 08 de Enero del 2015)
1.628 visualizaciones desde el 08 de Enero del 2015. Una media de 21 por semana
Se utiliza para demostrar el método de ordenamiento por quicksort mediante la generación de un arreglo con valores de forma aleatoria.

Requerimientos

Dev-C++

V1.0

Actualizado el 09 de Enero del 2015 (Creado el 08 de Enero del 2015)gráfica de visualizaciones de la versión: V1.0
1.629 visualizaciones desde el 08 de Enero del 2015. Una media de 21 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
//Estudiante Ing. Informatica Rafael V. Barrientos Holder.
//email vladimirbh@correodecuba.cu
//Metodo de ordenamiento quicksort C++
 
#include <iostream>
#include <cstdio>
#include <cstdlib>
 
 
using namespace std;
 
 
// Función para dividir el arreglo obtenido aleatoriamente  y hacer los intercambios
 
int dividir(int *array, int inicio, int final) {
    int izquierda;
    int derecha;
    int pivote;
    int temp;
 
    pivote = array[inicio];
    izquierda = inicio;
    derecha = final;
 
    // Mientras no se cruzen los índices
    while (izquierda < derecha) {
        while (array[derecha] > pivote) {
            derecha--;
        }
 
        while ((izquierda < derecha) && (array[izquierda] <= pivote)) {
            izquierda++;
        }
 
        // Si todavía no se cruzan los indices seguimos intercambiando
        if (izquierda < derecha) {
            temp = array[izquierda];
            array[izquierda] = array[derecha];
            array[derecha] = temp;
        }
    }
 
    // Cuando los indices se han cruzado, ponemos el pivote en el lugar que le corresponde
    temp = array[derecha];
    array[derecha] = array[inicio];
    array[inicio] = temp;
 
    // Return para aplicar la nueva ubicacion del pivote
    return derecha;
}
 
// Función recursiva para hacer el ordenamiento
void quicksort(int *array, int inicio, int final)
{
    int pivote;
 
    if (inicio < final) {
        pivote = dividir(array, inicio, final);
 
        // Ordeno la lista de los menores
        quicksort(array, inicio, pivote - 1);
 
        // Ordeno la lista de los mayores
        quicksort(array, pivote + 1, final);
    }
}
 
 
int main()
{
    int const MAX = 200; // el valor se puede modificar, con menor numero se repetirán con mas 
                                         //  frecuencia .
    int arraySize;
 
 
    cout << "Ingresa tamano: " << endl;
    cin >> arraySize;
 
    int a[200]; // el valor se puede modificar, es la cantidad de números a generar.
 
    // Para generar enteros aleatorios usamos rand()
    for (int i = 0; i < arraySize; i++) {
        a[i] = rand() % MAX;
    }
 
    cout << "Array antes de ordenarse: " << endl;
    for (int i = 0; i < arraySize; i++) {
        cout << a[i] << " ";
    }
 
    cout << endl << endl;
 
    quicksort(a, 0, arraySize - 1);
 
 
    cout << "Array ordenado " << endl;
    for (int i = 0; i < arraySize; i++ ){
        cout << a[i] << "-";
    }
 
    cout << endl << endl;
 
    system("Pause"); //Para cuando se ejecute la consola no cierre.
 
    return 0;
}



Comentarios sobre la versión: V1.0 (0)


No hay comentarios
 

Comentar la versión: V1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s2996