练习选择排序算法碰到鬼 一种用List出错 一种int[]没问题 求助了 大家帮我看看端倪 我菜在哪里还是真碰到灵异事件
实在无语了,近来重温算法,在写选择排序
可是 碰到鬼了
两种写法 一个用list<int> 一个用int[]
其实实现我认为都一样
各位帮我看看这两个方法有什么两样??
问题是运行起来 第一个方法用List<int>的这个 总归会有2-3位次序错误
用int[]却正常 自己在这个上面浪费好长时间了还没看出来 谁帮下。。。
List<int> list = GenerateList(10);
Sortings.ShowResult("OriginalList:", list);
Sortings.SelectionSort(new List<int>(list));
Sortings.Sort(list.ToArray());
随机生成的OriginalList:
95,35,61,-3,-29,-57,-75,26,-70,-21,
SelectionSort(List<int> list)方法的答案
-57,-29,-21,-75,-70,26,-3,61,35,95,
Sort(int[] list)的答案
-75,-70,-57,-29,-21,-3,26,35,61,95,
再来一组
OriginalList:
95,35,61,-3,-29,-57,-75,26,-70,-21,
-57,-29,-21,-75,-70,26,-3,61,35,95,
-75,-70,-57,-29,-21,-3,26,35,61,95,
OriginalList:
-55,78,59,86,-48,-90,-84,-5,-77,-77,
-90,-77,-84,-77,-55,-48,-5,59,78,86,
-90,-84,-77,-77,-55,-48,-5,59,78,86,
每次出错的序号都不固定,但是就那么几组数字
自己眼花了 谁帮忙看下。。谢谢了
{
for (int i = 0; i < list.Count() - 1; i++)
{
int minIndex = i;
for (int j = i + 1; j < list.Count(); j++)
{
if (list[minIndex] > list[j])
minIndex = j;
//Swap(list, i, minIndex);
int t = list[minIndex];
list[minIndex] = list[i];
list[i] = t;
}
}
//ShowResult("SelectionSort", list);
foreach (int i in list)
{
Console.Write(i.ToString() + ",");
}
Console.WriteLine();
}
public static void Sort(int[] list)
{
for (int i = 0; i < list.Length - 1; i++)
{
int min = i;
for (int j = i + 1; j < list.Length; j++)
{
if (list[min] > list[j])
min = j;
}
int t = list[min];
list[min] = list[i];
list[i] = t;
}
foreach (int i in list)
{
Console.Write(i.ToString() + ",");
}
Console.WriteLine();
}