Ayuda Urgente MergeSort
Publicado por ecaracciolos (1 intervención) el 18/05/2010 08:49:56
Amigos, necesito presentar mañana 19-05-2010 el codigo mergesort en la universidad pero resulta que me arroja el siguiente error al momento de ingresar el numero en el subindice 0, por favor el que me pueda ayudar mandar un correo en forma urgente a [email protected] , error es el siguiente: Exception in thread "main" java.lang.NullPointerException at MergeSort.main(MergeSort.java:16)
Este es el codigo
import java.io.*;
public class MergeSort {
private static int[] arrayEntrada;
public static void main(String args[]) throws IOException{
BufferedReader bf;
bf =new BufferedReader(new InputStreamReader(System.in));
int subindice = 0;
System.out.println("Cuantos valores desea ingresar: ");
subindice=Integer.parseInt(bf.readLine());
for (int i=0;i < subindice;i++){
System.out.println("Ingrese valor para la Subindice " + i + ": ");
arrayEntrada[i]=Integer.parseInt(bf.readLine());
}
mergeSort(arrayEntrada); //llamada al metodo mergeSort
System.out.println("Este es el ordenamiento de los numeros");
for (int i=0;i < arrayEntrada.length;i++){
System.out.println(arrayEntrada[i]+" ");
}
}
public static void mergeSort( int a[ ]){
int tmpArray[] = new int[ a.length ];
mergeSort( a, tmpArray, 0, a.length - 1 );
}
private static void mergeSort( int a[ ], int tmpArray[],int left, int right ){
if( left < right )
{
int center = ( left + right ) / 2;
mergeSort( a, tmpArray, left, center );
mergeSort( a, tmpArray, center + 1, right );
merge( a, tmpArray, left, center + 1, right );
}
}
private static void merge( int a[ ],int tmpArray[],int leftPos, int rightPos, int rightEnd){
int leftEnd = rightPos - 1;
int tmpPos = leftPos;
int numElements = rightEnd - leftPos + 1;
while( leftPos <= leftEnd && rightPos <= rightEnd ){
if( a[ leftPos ]<( a[ rightPos ] ) ){
tmpArray[ tmpPos++ ] = a[ leftPos++ ];
}
else{
tmpArray[ tmpPos++ ] = a[ rightPos++ ];
}
}
while( leftPos <= leftEnd ){f
tmpArray[ tmpPos++ ] = a[ leftPos++ ];
}
while( rightPos <= rightEnd ){
tmpArray[ tmpPos++ ] = a[ rightPos++ ];
}
for( int i = 0; i < numElements; i++, rightEnd-- ){
a[ rightEnd ] = tmpArray[ rightEnd ];
}
}
}
Este es el codigo
import java.io.*;
public class MergeSort {
private static int[] arrayEntrada;
public static void main(String args[]) throws IOException{
BufferedReader bf;
bf =new BufferedReader(new InputStreamReader(System.in));
int subindice = 0;
System.out.println("Cuantos valores desea ingresar: ");
subindice=Integer.parseInt(bf.readLine());
for (int i=0;i < subindice;i++){
System.out.println("Ingrese valor para la Subindice " + i + ": ");
arrayEntrada[i]=Integer.parseInt(bf.readLine());
}
mergeSort(arrayEntrada); //llamada al metodo mergeSort
System.out.println("Este es el ordenamiento de los numeros");
for (int i=0;i < arrayEntrada.length;i++){
System.out.println(arrayEntrada[i]+" ");
}
}
public static void mergeSort( int a[ ]){
int tmpArray[] = new int[ a.length ];
mergeSort( a, tmpArray, 0, a.length - 1 );
}
private static void mergeSort( int a[ ], int tmpArray[],int left, int right ){
if( left < right )
{
int center = ( left + right ) / 2;
mergeSort( a, tmpArray, left, center );
mergeSort( a, tmpArray, center + 1, right );
merge( a, tmpArray, left, center + 1, right );
}
}
private static void merge( int a[ ],int tmpArray[],int leftPos, int rightPos, int rightEnd){
int leftEnd = rightPos - 1;
int tmpPos = leftPos;
int numElements = rightEnd - leftPos + 1;
while( leftPos <= leftEnd && rightPos <= rightEnd ){
if( a[ leftPos ]<( a[ rightPos ] ) ){
tmpArray[ tmpPos++ ] = a[ leftPos++ ];
}
else{
tmpArray[ tmpPos++ ] = a[ rightPos++ ];
}
}
while( leftPos <= leftEnd ){f
tmpArray[ tmpPos++ ] = a[ leftPos++ ];
}
while( rightPos <= rightEnd ){
tmpArray[ tmpPos++ ] = a[ rightPos++ ];
}
for( int i = 0; i < numElements; i++, rightEnd-- ){
a[ rightEnd ] = tmpArray[ rightEnd ];
}
}
}
Valora esta pregunta


0