我试图编程阵列排序和搜索程序,将被处理的字符串中600项array.The数据要被排序的长相这样:合并排序在C#字符串数组
2017 | 25 |一月| 9994750 | 27.640 | 36.800 | DODECANESE ISLANDS,GREECE | 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(this T [] elements)where T:IComparable {}' –