Dan berikut source code dari Merge Sort :
package mergesort;
import java.util.Random;
public class MergeSort {
private int[] data;
private static final Random generator = new Random();
public MergeSort (int size){
data=new int [ size ];
for(int i=0;i<size;i++)
data[i]= 10 + generator.nextInt ( 90 );
}
public void sort(){
sortArray( 0, data.length -1 );
}
private void sortArray( int low, int high ){
if (( high - low )>= 1){
int middle1= ( low + high )/2;
int middle2= middle1 + 1;
System.out.println("split : " + subarray( low, high ));
System.out.println(" " + subarray( low, middle1 ));
System.out.println(" " + subarray( middle2, high ));
System.out.println();
sortArray( low, middle1 );
sortArray( middle2, high );
merge( low, middle1, middle2, high );
}
}
private void merge( int left, int middle1, int middle2, int right ){
int leftIndex = left;
int rightIndex = middle2;
int combinedIndex = left;
int[] combined=new int[ data.length ];
System.out.println("merge :" + subarray ( left, middle1 ));
System.out.println(" " + subarray( middle2, right ));
while ( leftIndex <= middle1 && rightIndex <= right ){
if ( data[ leftIndex ] <= data [ rightIndex ])
combined [ combinedIndex++ ]=data [ leftIndex++ ];
else
combined [ combinedIndex++ ]= data [ rightIndex++ ];
}
if ( leftIndex == middle2 )
while ( rightIndex <= right )
combined [ combinedIndex++ ]=data [ rightIndex++ ];
else
while ( leftIndex <= middle1 )
combined [ combinedIndex++ ]=data [ leftIndex++ ];
for ( int i=left; i <= right; i++ )
data[ i ]=combined [ i ];
System.out.println(" "+subarray ( left, right));
System.out.println();
}
public String subarray ( int low, int high ){
StringBuilder temporary = new StringBuilder();
for ( int i=0;i<low;i++ )
temporary.append(" ");
for (int i=low; i<=high; i++)
temporary.append(" "+data[ i ]);
return temporary.toString();
}
public String toString(){
return subarray (0, data.length -1);
}
}
package mergesort;
/**
*
* @author kRew0eL
*/
public class MergeSort_Test {
public static void main (String [] args){
MergeSort sortArray = new MergeSort(10);
System.out.println("Tidak Urut : "+sortArray+"\n");
sortArray.sort();
System.out.println("Telah Terurut : "+sortArray);
}
}




Tidak ada komentar:
Posting Komentar