Nel primo screen che hai mostrato viene fatto:
e successivamente, nel loop interno e precisamente nell'if, la condizione è:
C:
if(data[j] < min)
{
.....
}
Nel secondo caso:
e la condizione dell'if è:
C:
if(v[j] < v[jmin])
{
....
}
La differenza è quella che vedi: nel primo caso viene letto il valore in posizione data[i ] e viene memorizzato in min; nel secondo caso non viene utilizzata una variabile di appoggio ma si utilizza direttamente l'array specificando v[jmin].
Sempre nel primo caso, quando si entra nel corpo dell'if, viene letto il nuovo valore ed assegnato a min. Nell'altro si continua ad utilizzare solo l'indice dell'array.
Diciamo quindi che nel primo caso si evita il continuo accesso alla locazione
i dell'array.
Nella pratica il discorso è in sè poco utile in quanto vi sono un sacco di altri fattori che andrebbero considerati (compilatore (=> ottimizzazioni), cache, ....) e che renderebbero tutto ciò molto bello in teoria, ma che penso sia meglio evitarti per evitare ulteriore confusione e mettere troppa carne al fuoco.
Se hai però domande specifiche, dettate da conoscenze di base, approfondisco volentieri. ;)