Selection sort

Il selection sort fa parte degli algoritmi di sorting, ed è una procedura ricorsiva.

Input Sequenza di valori .

Output Permutazione della sequenza tale che

title: Attenzione
Come costo computazionale calcoliamo i confronti eseguiti tra i valori di A.
  1. Cerca il valore minimo tra gli elementi e lo scambia con quello al primo posto
  2. Ordina i restanti elementi allo stesso modo
  3. Quando rimane solo in elemento da riordinare, la procedura termina
SelectionSort(A, i, j):
	if i == j then
		return
	else
		k := IndexForMin(A, i, j)
		inverti A[i] e A[k]
		SelectionSort(A, i+1, j)

Chiamata principale: SelectionSort(a, 0, n-1).

Funzione per trovare l’indice dell’elemento minore nell’array:

IndexForMin(A, i, j):
	k := i
	for l = i + 1 to j:
		if A[l] < A[k] then
			k := l
	return k

Il costo computazionale di IndexForMin è esattamente , il che rientra in .

Calcolo del costo dell’algoritmo:

  • caso base:
  • ogni chiamata ricorsiva richiede i confronti tra gli elementi per trovare , + quelli della chiamata successiva
  • dato A con i e j, IndexForMin richiede operazioni
  • la procedura ricorsiva viene invocata 1 volta per ogni i tale che

Questo si trasforma in

asd_11