练习选择排序算法碰到鬼 一种用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,

每次出错的序号都不固定,但是就那么几组数字
自己眼花了 谁帮忙看下。。谢谢了

public static void SelectionSort(List<int> list)
        {

            
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();
        }
posted @ 2008-05-04 00:33  BetaGeek™  阅读(309)  评论(4编辑  收藏  举报