| 分類:[C#]
2017/03/30(Thu) 22:07:30 編集(投稿者)
public class MargeSortArray { private static void mergeSortArray(int[] a,int low,int high) { if(low >= high) { return; } int mid = (low + high) / 2; mergeSortArray(a, low, mid); //再帰01 mergeSortArray(a, mid + 1, high); //再帰02
int[] b = new int[a.Length]; for(int i = low;i <= mid; i++) { b[i] = a[i]; }
for(int i = mid + 1,j= high;i <= high; i++, j--) { b[i] = a[j]; }
int ii = low; int jj = high;
for(int k = low;k <= high; k++) { if(b[ii] <= b[jj]) { a[k] = b[ii++]; } else { a[k] = b[jj--]; } } }
public static void sort(int[] a) { mergeSortArray(a, 0, a.Length - 1); } }
利用する側は int[] a = new int[] { 55, 13, 3, 45, 74, 87, 46, 30 }; MargeSortArray.sort(a); となっております。
再帰処理を用いた、マージソートのコードなのですが このコードをどのように読んでいけばいいのか分からず 困っております。
この再帰処理の部分をどのように読んでいけばいいのでしょうか? みなさまの知恵をお貸しください
|