ArrayList排序不正确;选择排序

时间:2019-04-27 18:52:02

标签: c# sorting arraylist

我必须对选择排序进行编码,并且我以前使用了Array,但它工作得很好,但是文本文件太大,无法使用Array,因此我不得不将代码转换为ArrayList。现在发生的是,(也有大型文本文件)多数数已排序,但在排序后的数字之间有一些未排序的数字,认为这可能是重复错误... 我尝试更改为降序,并且它执行相同的操作。我使用了一个较小的文本文件来显示输出。所有相关方法如下。

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

1 个答案:

答案 0 :(得分:2)

您不应该将未排序部分的最小值与最后排序的值进行比较,然后将其交换,而只需查找未排序部分的最小值并将其与第一个未排序的值交换(与最后排序的值相邻) )。