每次迭代后显示数组

时间:2016-03-11 16:21:58

标签: c# arrays forms sorting

我正在制作一个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;
    }



}
}

任何帮助都将不胜感激。

0 个答案:

没有答案