我試圖編程陣列排序和搜索程序,將被處理的字符串中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 {}' –