Сортировка слиянием - C# (205635)
Формулировка задачи:
Помогите пожалуйса!
Ошибка: process is terminated due to stackoverflowexception
static List<string> M_sort(List<string> stm1)
{
if (stm1.Count-1 == 1)
return stm1;
int mid_point = stm1.Count / 2;
return Merge(M_sort(stm1.Take(mid_point).ToList()), M_sort(stm1.Skip(mid_point).ToList()));
}
static List<string> Merge(List<string> mass1, List<string> mass2)
{
int a = 0, b = 0;
List<string> merged = new List<string>(mass1.Count-1 + mass2.Count-1);
for (int i = 0; i < mass1.Count-1 + mass2.Count-1; i++)
{
if (b < mass2.Count-1 && a < mass1.Count-1)
if (mass1[a].CompareTo(mass2[b])==1 && b < mass2.Count-1)
merged[i] = mass2[b++];
else
merged[i] = mass1[a++];
else
if (b < mass2.Count-1)
merged[i] = mass2[b++];
else
merged[i] = mass1[a++];
}
return merged;
}static void Main(string[] args)
{
List<string> strings4 = new List<string>() { "dfs","sdgdfdffd", "sddsgdsggsda", "safdgggggggdggg", "324krklegn", "djhlfadal", "kdl", "jdin", "dva", "3 tri", "chetiri", "3 tai", "ytr 5", "krtj", "20202", "fkkrt6", "2 ejergijgd", "oornnr6", "romkenf569", "0", "1", "kfj 334 5993", "kkfoooo35", "ooit995", "oooit896", "oooit" };
List<string> stm=new List<string>();
stm = M_sort(strings4);
}Решение задачи: «Сортировка слиянием»
textual
Листинг программы
List<string> merged = new List<string>(mass1.Count + mass2.Count); for (int i = 0; i < merged.Count-1; i++)