package mainimport "fmt"func merge(values[]int , left,mid,right int){ leftbegin,leftend,rightbegin,rightend:=left,mid,mid+1,right sorted:=make([]int,(right-left)+1) index:=0 fmt.Println("begin===============") fmt.Println("leftbegin: ",leftbegin,"leftend: ",leftend,"rightbegin: ",rightbegin,"rightend: ",rightend) for (leftbegin<=leftend && rightbegin<=rightend){ fmt.Println("entering for") if values[leftbegin]<values[rightbegin]{ fmt.Println("if,,, ","index: ",index,"values[leftbegin]: ",values[leftbegin]) sorted[index]=values[leftbegin] leftbegin++ index++ }else { fmt.Println("else,,, ","index: ",index," ",values[rightbegin]) sorted[index]=values[rightbegin] rightbegin++ index++ } fmt.Println("sorted: ",sorted) } fmt.Println("leftbegin: ",leftbegin,"leftend: ",leftend,"rightbegin: ",rightbegin,"rightend: ",rightend,"index: ",index) for leftbegin<=leftend{ fmt.Println("leftbegin<leftend ","index: ",index) fmt.Println("sorted: ",sorted) sorted[index]=values[leftbegin] leftbegin++ index++ } for rightbegin<=rightend{ fmt.Println("rightbegin<rightend ","index: ",index) fmt.Println("sorted: ",sorted) sorted[index]=values[rightbegin] rightbegin++ index++ } fmt.Println(sorted) i:=0 for i<index{ values[left]=sorted[i] left++ i++ } fmt.Println("sorted: ",sorted) fmt.Println("end")}func MergeSort(values[]int, left, right int){ fmt.Println("mergesort *******************") fmt.Println("left:",left,"right:",right) if left<right{ mid:=(right-left)/2+left fmt.Println("mergesort left *******************") fmt.Println("left:",left,"mid:",mid) MergeSort(values,left,mid) fmt.Println("mergesort right *******************") fmt.Println("mid+1:",mid+1,"right:",right) MergeSort(values,mid+1,right) merge(values,left,mid,right) fmt.Println(values) }}func main(){ values:=[]int{12,6,4,7,2,3} MergeSort(values,0,len(values)-1) fmt.Println(values)}