19
Ordenamiento de Ordenamiento de Arreglos Arreglos COMP 242 COMP 242

Ordenamiento de Arreglos COMP 242. Ordenamiento de Arreglos Bubble Sort Bubble Sort –Manera fácil de organizar datos en orden ascendente o descendente

Embed Size (px)

Citation preview

Page 1: Ordenamiento de Arreglos COMP 242. Ordenamiento de Arreglos Bubble Sort Bubble Sort –Manera fácil de organizar datos en orden ascendente o descendente

Ordenamiento de ArreglosOrdenamiento de Arreglos

COMP 242COMP 242

Page 2: Ordenamiento de Arreglos COMP 242. Ordenamiento de Arreglos Bubble Sort Bubble Sort –Manera fácil de organizar datos en orden ascendente o descendente

Ordenamiento de ArreglosOrdenamiento de Arreglos

• Bubble SortBubble Sort– Manera fManera fácil de organizar datos en ácil de organizar datos en

orden ascendente o descendente.orden ascendente o descendente.

Page 3: Ordenamiento de Arreglos COMP 242. Ordenamiento de Arreglos Bubble Sort Bubble Sort –Manera fácil de organizar datos en orden ascendente o descendente

Bubble sortBubble sort

• Ejemplo:Ejemplo:

77 22 33 88 99 11

0 1 2 3 4 5

Page 4: Ordenamiento de Arreglos COMP 242. Ordenamiento de Arreglos Bubble Sort Bubble Sort –Manera fácil de organizar datos en orden ascendente o descendente

Bubble sortBubble sort

77 22 33 88 99 11

0 1 2 3 4 5

El bubble sort comienza comparando los primeros dos elementos en el arreglo. Si el elemento 0 es mayor que el elemento 1, se intercambian los valores. Luego del intercambio, el arreglo se mostrará como sigue:

Page 5: Ordenamiento de Arreglos COMP 242. Ordenamiento de Arreglos Bubble Sort Bubble Sort –Manera fácil de organizar datos en orden ascendente o descendente

Bubble sortBubble sort

22 77 33 88 99 11

0 1 2 3 4 5

Este método se repite con los elementos 1 y 2. Si el elemento 1 es mayor que el elemento 2, estos se intercambian. Entonces el arreglo se mostrará como sigue:

Page 6: Ordenamiento de Arreglos COMP 242. Ordenamiento de Arreglos Bubble Sort Bubble Sort –Manera fácil de organizar datos en orden ascendente o descendente

Bubble sortBubble sort

22 33 77 88 99 11

0 1 2 3 4 5

Luego, se comparan los elementos 2 y 3. En el arreglo, estos elementos ya están en orden ascendente, por lo tanto no ocurre intercambio. Al continuar el ciclo, se comparan los elementos 3 y 4. Una vez más, no ocurre intercambio. Al compararse los elementos 4 y 5, ocurre intercambio ya que el contenido del elemento 4 es mayor al elemento 5. Luego de esto, el arreglo lucirá como a continuación:

Page 7: Ordenamiento de Arreglos COMP 242. Ordenamiento de Arreglos Bubble Sort Bubble Sort –Manera fácil de organizar datos en orden ascendente o descendente

Bubble sortBubble sort

22 33 77 88 11 99

0 1 2 3 4 5

En este punto, todo el arreglo ya ha sido verificado, pero aún su contenido no está en el orden correcto. El proceso comienza de nuevo comparando los elementos 0 y el 1. No ocurre intercambio ya que ambos están en el orden correcto. Se comparan los elementos 1 y 2 y tampoco ocurre intercambio. Se procede a comparar los elementos 2 y 3, y tampoco ocurre intercambio. Entonces se comparan los elementos 3 y 4. Aqui ocurre intercambio ya que no están en orden ascendente. El arreglo lucirá como sigue:

Page 8: Ordenamiento de Arreglos COMP 242. Ordenamiento de Arreglos Bubble Sort Bubble Sort –Manera fácil de organizar datos en orden ascendente o descendente

Bubble sortBubble sort

22 33 77 11 88 99

0 1 2 3 4 5

Todo este proceso se repetirá hasta que no se tengan que realizar más intercambio, es decir, hasta que todo el arreglo esté organizado de forma ascendente.

Page 9: Ordenamiento de Arreglos COMP 242. Ordenamiento de Arreglos Bubble Sort Bubble Sort –Manera fácil de organizar datos en orden ascendente o descendente

Bubble sortBubble sort

11 22 33 77 88 99

0 1 2 3 4 5

Al final del proceso, el arreglo lucirá de esta forma.

Page 10: Ordenamiento de Arreglos COMP 242. Ordenamiento de Arreglos Bubble Sort Bubble Sort –Manera fácil de organizar datos en orden ascendente o descendente

Bubble sortBubble sort

• ProgramaciProgramación en C++ón en C++

Page 11: Ordenamiento de Arreglos COMP 242. Ordenamiento de Arreglos Bubble Sort Bubble Sort –Manera fácil de organizar datos en orden ascendente o descendente

#include<iostream>#include<iostream>using namespace std;using namespace std;// Function prototypes// Function prototypesvoid sortArray(int [], int);void sortArray(int [], int);void showArray(int [], int);void showArray(int [], int);int main()int main(){{

// Array of unsorted values// Array of unsorted valuesint values[6]= {7, 2, 3, 8, 9, 1};int values[6]= {7, 2, 3, 8, 9, 1};

//Display the values//Display the valuescout << "The unsorted values are: " << endl;cout << "The unsorted values are: " << endl;showArray(values, 6);showArray(values, 6);

// Sort the values.// Sort the values.sortArray(values, 6);sortArray(values, 6);

//Display them again.//Display them again.cout << "The sorted values are: " << endl;cout << "The sorted values are: " << endl;showArray(values, 6);showArray(values, 6);system("pause");system("pause");return 0;return 0;

}}//Definition of function sortArray//Definition of function sortArrayvoid sortArray(int array[], int size)void sortArray(int array[], int size){{

bool swap;bool swap;int temp;int temp;

dodo{{

swap = false;swap = false;for(int count = 0; count < (size - 1); count++)for(int count = 0; count < (size - 1); count++){ {

if (array[count] > array[count + 1])if (array[count] > array[count + 1]){{

temp = array[count];temp = array[count];array[count] = array[count + 1];array[count] = array[count + 1];array[count + 1] = temp;array[count + 1] = temp;swap = true;swap = true;

}}}}

} while (swap);} while (swap);}}

// Definition of function showArray// Definition of function showArrayvoid showArray(int array[], int size)void showArray(int array[], int size){{

for(int count = 0; count < size; count++)for(int count = 0; count < size; count++)cout << array[count] << " ";cout << array[count] << " ";

cout << endl;cout << endl;}}

Page 12: Ordenamiento de Arreglos COMP 242. Ordenamiento de Arreglos Bubble Sort Bubble Sort –Manera fácil de organizar datos en orden ascendente o descendente
Page 13: Ordenamiento de Arreglos COMP 242. Ordenamiento de Arreglos Bubble Sort Bubble Sort –Manera fácil de organizar datos en orden ascendente o descendente

Selection SortSelection Sort

• El El bubble sort bubble sort es ineficiente para es ineficiente para organizar arreglos que contengan una organizar arreglos que contengan una gran cantidad de datos porque solo gran cantidad de datos porque solo mueve un dato a la vez. El mueve un dato a la vez. El ordenamiento de selecciordenamiento de selección o ón o Selection Selection sort sort usualmente realiza pocos usualmente realiza pocos intercambios porque mueve los datos intercambios porque mueve los datos inmediatamente a la posición final del inmediatamente a la posición final del arreglo.arreglo.

Page 14: Ordenamiento de Arreglos COMP 242. Ordenamiento de Arreglos Bubble Sort Bubble Sort –Manera fácil de organizar datos en orden ascendente o descendente

Selection SortSelection Sort

• Ejemplo:Ejemplo:

55 77 22 88 99 11

0 1 2 3 4 5

Se inicia escaneando el arreglo completo comenzando con la posición 0, hasta localizar el elemento con el valor más pequeño. El contenido de este elemento se intercambia con el elemento 0. Esto causa que el arreglo luzca asi:

Page 15: Ordenamiento de Arreglos COMP 242. Ordenamiento de Arreglos Bubble Sort Bubble Sort –Manera fácil de organizar datos en orden ascendente o descendente

Selection SortSelection Sort

11 77 22 88 99 55

0 1 2 3 4 5

El algoritmo repite el proceso, pero como ya el elemento 0 del arreglo contiene el valor más pequeño, se comienza en esta ocasión con el elemento 1. Aqui el contenido del elemento 1 se intercambia con el elemento 2 (valor más pequeño de arreglo de los elementos restantes). Luego de esto, el arreglo luce asi:

11 22 77 88 99 55 0 1 2 3 4 5

Page 16: Ordenamiento de Arreglos COMP 242. Ordenamiento de Arreglos Bubble Sort Bubble Sort –Manera fácil de organizar datos en orden ascendente o descendente

Selection SortSelection SortNuevamente se repite el proceso, pero esta vez comenzando el escaneo del arreglo en el elemento 2. Tan pronto se localize el valor menor entre los elementos restantes, se intercambia con el elemento 2. Se sigue repitiendo el algoritmo hasta que se finalice de escanear todo el arreglo. Al final, lucirá como sigue:

11 22 55 77 88 99

0 1 2 3 4 5

Page 17: Ordenamiento de Arreglos COMP 242. Ordenamiento de Arreglos Bubble Sort Bubble Sort –Manera fácil de organizar datos en orden ascendente o descendente

Selection SortSelection Sort

• ProgramaciProgramación en C++ón en C++

Page 18: Ordenamiento de Arreglos COMP 242. Ordenamiento de Arreglos Bubble Sort Bubble Sort –Manera fácil de organizar datos en orden ascendente o descendente

#include<iostream>using namespace std;

void selectionSort(int [], int);void showArray(int [], int);

int main(){

const int SIZE = 6;int values[SIZE] = {5, 7, 2, 8, 9, 1};

cout << "The unsorted values are: " << endl; //Display the valuesshowArray(values, SIZE);

selectionSort(values, SIZE); // Sort the values

cout << "The sorted values are: " << endl; // Display the values againshowArray(values, SIZE);system("pause");return 0;

}void selectionSort(int array[], int size){

int startScan, minIndex, minValue;

for(startScan = 0; startScan < (size -1); startScan++){

minIndex = startScan;minValue = array[startScan];for(int index = startScan + 1; index < size; index++){

if(array[index] < minValue){

minValue = array[index];minIndex = index;

}}array[minIndex] = array[startScan];array[startScan] = minValue;

}}void showArray(int array[], int size){

for(int count = 0; count < size; count++)cout << array[count] << " ";cout << endl;

}

Page 19: Ordenamiento de Arreglos COMP 242. Ordenamiento de Arreglos Bubble Sort Bubble Sort –Manera fácil de organizar datos en orden ascendente o descendente