Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Array{
- public static void mergesort(int []list){
- if(list.length-1>0){
- int middle=list.length/2;
- int []leftList=new int[middle];
- int []rightList=new int[list.length-middle];
- divide(list,leftList,rightList);//divide list into two array - left 'n' right
- mergesort(leftList);//recursive for left side
- mergesort(rightList);//recursive for right side
- merge(list,leftList,rightList);//merge
- }
- }
- public static void divide(int []list,int []leftList,int []rightList){
- int middle=list.length/2;
- int left=0,right=0;
- for(int i=0;i<middle;i++){//left side array
- leftList[i]=list[i];
- }
- for(int i=middle;i<list.length;i++){//right side array
- rightList[i-middle]=list[i];
- }
- }
- public static void merge(int []list,int []leftList,int []rightList){
- int left=0;int right=0;
- for(int i=0;left<leftList.length&&right<rightList.length;i++){//copy left n right into list - increasing order
- if(leftList[left]>rightList[right]){
- list[i]=rightList[right];
- right++;
- }
- else{
- list[i]=leftList[left];
- left++;
- }
- }
- for(int i=left;i<leftList.length;i++){//copy the rest of left into list
- list[i+right]=leftList[i];
- }
- for(int i=right;i<rightList.length;i++){//copy the rest of right into list
- list[i+left]=rightList[i];
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment