我正在制作一个Windows表单应用程序,它使用Gnome Sort算法对随机数列表进行排序。数组列在列表框中。但它现在正在做的是在列表框中显示所有已排序的数组。我需要它做的是在每次迭代后显示在列表框中水平排序的数组,以便列表框中的每一行显示每个数组和每行排序的数字。
我自己尝试过,但我每次都打破了这个程序。
这是我到目前为止所拥有的:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
namespace Activity1._3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
FillArray();
}
static int max = 29;
int[] MyArray = new int[max];
private void button1_Click(object sender, EventArgs e)
{
SortArray();
}
private void FillArray()
{
Random rand = new Random();
for (int i = 0; i < max; i++)
{
MyArray[i] = rand.Next(100);
listArray.Items.Add(MyArray[i] + "");
}
}
private void SortArray()
{
int pos = 1;
while (pos < max)
{
listArray.Items.Clear();
for (int i = 0; i < max; i++)
{
listArray.Items.Add(MyArray[i]);
}
if (MyArray[pos] >= MyArray[pos - 1])
{
pos++;
}
else
{
SwapArray(pos);
if (pos > 1)
{
pos--;
}
}
}
}
private void SwapArray(int pos)
{
int temp;
temp = MyArray[pos];
MyArray[pos] = MyArray[pos - 1];
MyArray[pos - 1] = temp;
}
}
}
任何帮助都将不胜感激。