Merge sort: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 50:
Seguono alcune implementazioni in vari [[Linguaggio di programmazione|linguaggi]].
===
void Sort(float array[], int begin, int end)
Riga 61:
Merge(array, begin, mid, end);
}
===[[Linguaggio di programmazione Java|Java]]===
import java.util.*;
public class MergeSort{
private static void mergeSort(int []a, int []vectorTemp, int left, int right ){
if (left < right){
int center = (left + right) /2;
mergeSort (a, vectorTemp, left, center);
mergeSort (a, vectorTemp, center+1, right);
merge (a, vectorTemp, left, center+1, right);
}
}
public static void mergeSort(int[]a ){
int vectorTemp [];
vectorTemp =new int [a.length];
mergeSort (a, vectorTemp, 0, a.length-1);
}
private static void merge (int[]a, int[]vectorAux, int posLeft, int posRight, int posEnd ){
int endLeft = posRight -1;
int posAux = posLeft;
int numElemen = posEnd - posLeft +1;
while (posLeft <= finRight && posRight <=posEnd)
if ((a[ posLeft ])< (a[posRight]))
vectorAux [posAux++]=a[posLeft++];
else
vectorAux [posAux++] = a[posRight++];
while (posLeft <= endLeft)
vectorAux [posAux++]=a[posLeft++];
while (posRight <= posEnd)
vectorAux [posAux++]=a[posRight++];
for (int i=0;i<numElemen;i++,posEnd--)
a[posEnd]=vectorAux[posEnd];
}
public static void main (String [] args){
int vector[]= { 6, 77, 4, 65, 2, 1, 9, 45};
mergeSort(vector)}
}
[[Categoria:Algoritmi di ordinamento]]
| |||