Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private static void mergeSort(int[] arr,int begin,int end){
- if(begin>=end)
- return;
- int middle=(begin + end)/2;
- mergeSort(arr,begin,middle);
- mergeSort(arr,middle+1,end);
- merge(arr,begin,middle,end);
- }
- private static void merge(int[] arr,int begin,int middle,int end){
- int firstContainerLimit=middle-begin+1;
- int[] firstContainer=new int[firstContainerLimit];
- int secondContainerLimit=end-middle;
- int[] secondContainer=new int[secondContainerLimit];
- //copy to first container
- for(int i=0;i<firstContainerLimit;i++)
- firstContainer[i]=arr[begin+i];
- for(int i=0;i<secondContainerLimit;i++)
- secondContainer[i]=arr[middle+1+i];
- int i=0;
- int j=0;
- int k=begin;
- while(i< firstContainerLimit && j<secondContainerLimit){
- if(firstContainer[i] <= secondContainer[j]){
- arr[k++]=firstContainer[i];
- i++;
- }
- else{
- arr[k++]=secondContainer[j];
- j++;
- }
- }
- while(i<firstContainerLimit)
- arr[k++]=firstContainer[i++];
- while(j<secondContainerLimit)
- arr[k++]=secondContainer[j++];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement