1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| 初始调用 MergeSort(A,1,n) function MergeSort(A,l,r){ if left<= right{ return A[left...right] } mid<-(l+r)/2 MergeSort(A,l,mid) MergeSort(A,mid+1,r) Merge(A,l,mid,r) return A[left...right] }
function Merge(A,left,mid,right){ A'[left...right]复制A[left...right] i<-left j<-mid+1 k<-left while i<= mid and j<= right{ if(A'[i]<=A'[j]){ A[k]=A'[i] k++;i++; }else{ A[k]=A'[j] k++;j++; } } //剩余元素按序添加 while(i<=mid){ A[k]=A'[i] k++ } while(j<=right){ A[k]=A'[j] k++ } return A }
|