首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArrayList排序顺序错误;选择排序

ArrayList排序顺序错误;选择排序
EN

Stack Overflow用户
提问于 2019-04-28 02:52:02
回答 1查看 61关注 0票数 0

我必须对代码进行选择排序,而且我以前使用的是数组,它工作得很好,但是文本文件太大了,无法使用数组,所以我必须将代码转换为ArrayList。现在发生的情况是,(对于大的文本文件)大多数数字是排序的,但在排序的数字之间有一些未排序的数字,我认为这可能是一个重复错误……我试着改成降序,它做了同样的事情。我使用了一个较小的文本文件来显示输出。所有相关的方法如下。

代码语言:javascript
复制
public void SelectionSort() // ascending order
{

    for (int i = 1; i <= List.Count; i++) // go through the list
    {
        ListClass minimum = (ListClass)List[i-1];
        int min = i - 1;
        for (int j = i;j <= List.Count-1; j++)
        {
            ListClass cur = (ListClass)List[j];

            if (minimum.getNum() > cur.getNum())
                min = j; // min equals smallest in list j

        }
        swap(List, i-1, min); 
    }
    Console.WriteLine("Array after selection sort: ");
    foreach (ListClass cur in List)
    {
        cur.Display();
    }
public static void swap(ArrayList List, int x, int y)
{
    object temp = List[x];
    List[x] = List[y];
    List[y] = temp;
}
public void Display()
{
    foreach (ListClass cur in List)
    {
        cur.Display();
    }
}

排序前数组:1 2 5 7 8 90 889 88 654 33 2 3选择后数组排序:1 2 3 5 7 8 90 2 88 33 654 889

EN

回答 1

Stack Overflow用户

发布于 2019-04-28 04:51:17

您不应该将未排序部分的最小值与最后一个排序值进行比较并将其交换,您只需找到未排序部分的最小值并将其与第一个未排序的值(位于最后一个排序值的旁边)交换。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55883825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档