我必须对选择排序进行编码,并且我以前使用了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); // swap current position in list i and the smallest position in list j
}
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