Documente Academic
Documente Profesional
Documente Cultură
búsqueda y ordenación
Programación 2018-2019
Grados en Ingeniería Telemática,
Ingeniería de Sistemas de Comunicaciones
Algoritmo de búsqueda
• Búsqueda lineal
• Búsqueda binaria
Búsqueda lineal
• NO requiere que el array de entrada sea ordenado.
• Utiliza la técnica del divide y vencerás (divide et impera): dividir el espacio de las
soluciones del problema en dos, y descartar una parte.
start = 4
end = 7
10 22 45 67 71 75 82 98 m = (4+7) / 2 = 5
start = 6
10 22 45 67 71 75 82 98 end = 7
m = (6+7) / 2 = 6
82 es igual a 82, el elemento se encuentra en posición 6
Algoritmo de ordenación
• Cualquier algoritmo que pone los elementos de
una lista en un cierto orden.
• https://visualgo.net/sorting
Programación 2018-2019
Ordenación de arrays: bubblesort
(ordenación de burbuja)
Programación 2018-2019
Pseudocódigo bubblesort
HACER
swapped = false
PARA i DESDE 1 HASTA indexOfLastUnsortedElement
SI leftElement > rightElement
swap(leftElement, rightElement)
swapped = true
MIENTRAS swapped
Programación 2018-2019
Código bubblesort
public static void bubbleSort(int a[]){
boolean swap = false;
int j = a.length-1;
do {
swap = false;
for(int i = 0; i < j ; i++){
if(a[i] > a[i+1]){
int tmp = a[i];
a[i] = a[i+1];
a[i+1] = tmp;
swap = true;
}
}
j--;
} while(swap);
}
Ordenación de arrays:
selection sort (ordenación por selección)
Programación 2018-2019
Pseudocódigo selectionsort
Programación 2018-2019
Código selectionsort
public static void selectionSort(int a[]){
for (int i = 0; i < a.length-1; i++) {
int min = i;
for (int j = i+1; j < a.length; j++) {
if(a[j] < a[min]) min = j;
}
if(min != i){
int tmp = a[i];
a[i] = a[min];
a[min] = tmp;
}
}
}
Otros algoritmos de
ordenación
• Insertion sort
• Merge sort
• Quick sort
Programación 2018-2019