:マージ私は、ソート、文字列内のようなルックスをソートするarray.Theデータ600個のアイテムを扱うことになるプログラムの検索配列をプログラムしようとしています
2017 | 25 | 1月| 9994750 | 27.640 | 36.800 |ドデカンゼ諸島、ギリシャ| 1485307173 | 01:19:33 | 4.000 |
このデータをソートするためにマージソートを実装しようとしています。しかし、私はint配列用に設計されたマージソートプログラムを文字列配列をソートするために設計されたものに変換する方法を理解することができません。どのように私はこれを行うことができるか誰も説明できますか?
これは既存の組み込み関数を使用して行うことができますが、私は来年度の大学のコースワークに備えてこれを試していますので、マージソートをゼロから作成し、組み込み関数を使用しないでください。
サイドノート:現在の形式では、プログラムはマージソートでも自然に何ヶ月もソートできないことに気づく必要がありますが、これはすでにマージソートの動作を得ることができます思惑通り。
現在のマージソートプログラム:
static public void MainMerge(string[] numbers, int left, int mid, int right)
{
int[] temp = new int[25];
int i, eol, num, pos;
eol = (mid - 1);
pos = left;
num = (right - left + 1);
while ((left <= eol) && (mid <= right))
{
if (numbers[left].CompareTo(numbers[mid]))
temp[pos++] = numbers[left++];
else
temp[pos++] = numbers[mid++];
}
while (left <= eol)
temp[pos++] = numbers[left++];
while (mid <= right)
temp[pos++] = numbers[mid++];
for (i = 0; i < num; i++)
{
numbers[right] = temp[right];
right--;
}
}
static public void SortMerge(string[] numbers, int left, int right)
{
int mid;
if (right > left)
{
mid = (right + left)/2;
SortMerge(numbers, left, mid);
SortMerge(numbers, (mid + 1), right);
MainMerge(numbers, left, (mid + 1), right);
}
}
コードを再利用しようとすると、しばしばそれは価値があるものです。それはあなたが一から始めようとするほうがはるかに簡単な作業のようです。 – coinbird
@coinbird何ですか?これは、ジェネリックスを使用して非常に簡単です。 "最初から開始する"理由はありません – Amy
IComparableを実装するジェネリックを使用してソートを実装する必要があります。 'public void MergeSort(このT []要素)ここでT:IComparable {}' –