Bubbelsort + 显示内容

问题描述 投票:0回答:1

当我尝试进行 bubbelsort 时,我做错了。在底部的文本框中显示正确的文本也有问题。

我不知道如何让我所有的冒泡排序列表显示在我的文本框中。 当我按下“排序”按钮时,我的结果显示不正确。它只显示一个销售人员,即使我在我的表格中输入了几个并且在显示每个级别的所有卖家之后我无法获得文本“2 个卖家已达到 3 级:100-199 篇文章”等售出物品后的顺序。 我想要得到的结果是:

Name          Ssn           District     Pcs
Sara          4503038990    Piteå        173
Michael       6503032345    Malmö        180
2 sellers have reached level 3: 100-199 articles

Peter         3502038964    Boden        202
Emma          7805055673    Luleå        203
2 sellers have reached level 4: over 199 articles

这是我的销售人员课程:

public class Salesperson
{
    public string Namn = "";
    public string PersNummer ="";
    public string Distrikt = "";
    public int Sold = 0;
    public int Niva()
    {
        if (Sold < 50)
        {
            return 1;
        }
        else if (Sold >= 50 && Sold < 100)
        {
            return 2;
        }
        else if (Sold >= 100 && Sold < 200)
        {
            return 3;
        }
        return 4;
    }
    public override string ToString()
    {
        return $"{Namn}\t{PersNummer}\t{Distrikt}\t{Sold} \r\n";
    }
}

这是我表格中的代码。

public partial class Inlämning2 : Form
{
    //Lista för att lagra flera salespersoner
    public List<Salesperson> Salespeople = new List<Salesperson>();


    public Inlämning2()
    {
        InitializeComponent();

    }

    public void btnRegistrera_Click(object sender, EventArgs e)
    {
        //Läs in uppgifter från formulär
        Salesperson sp = new Salesperson();
        sp.Namn = tbxNamn.Text;
        sp.PersNummer = tbxPersnr.Text;
        sp.Distrikt = tbxDistrikt.Text;
        sp.Sold = int.Parse(tbxSold.Text);

        //Lägg till salesperson i listan
        Salespeople.Add(sp);

        //Visa lista i textruta
        tbxResultat.AppendText (sp.ToString());

        //Töm rutor för ny inmatning
        tbxNamn.Text = "";
        tbxPersnr.Text = "";
        tbxDistrikt.Text = "";
        tbxSold.Text = "";

        //Fokus på ruta 1
        tbxNamn.Focus();
        
    }
    
    public void lblSortera_Click(object sender, EventArgs e)
    {
        //Sortera lista baserat på sålda artiklar med bubbelsortera
         void Bubbelsortera(int[] Salespeople)
        {
            int temp;
            //Loopar igenom array med en mindre än sista positionen.
            for (int i = 0; i < Salespeople.Length - (1 + i); i++)
            {
                //i är den aktuella positionen och går inte till sista postionen då den redan är flyttad.
                for (int j = 0; j < Salespeople.Length - (1; j++)
                {
                    //Går igenom listan
                    if (Salespeople[j] > Salespeople[j + 1])
                    {
                        //Om den aktuella är större än nästa, byt plats.
                        temp = Salespeople[j + 1];
                        Salespeople[j + 1] = Salespeople[j];
                        Salespeople[j] = temp;
                    }
                }
            }
          Bubbelsortera (Salespeople);
        }

        //Skriv salesperson i ordning och se hur många som nått varje nivå
        int Niva1Count = 0;
        int Niva2Count = 0;
        int Niva3Count = 0;
        int Niva4Count = 0;

        foreach (Salesperson sp in Salespeople)
        {
            string Niva;
            if (sp.Sold < 50)
            {
                Niva = "nivå 1: under 50 artiklar";
                Niva1Count++;
            }
            else if (sp.Sold < 100)
            {
                Niva = "nivå 2: 50-99 artiklar";
                Niva2Count++;
            }
            else if (sp.Sold < 200)
            {
                Niva = "nivå 3: 100-199 artiklar";
                Niva3Count++;
            }
            else
            {
                Niva = "nivå 4: över 199 artiklar";
                Niva4Count++;
            }

            

            tbxResultat.Text = ("Namn \t Persnr \t Distrikt \t Sålda artiklar\r\n");

            if (sp.Sold < 50)
            {
                tbxResultat.AppendText(sp.ToString() +"\r\n");
                   tbxResultat.AppendText (Niva1Count + " säljare har nått " + Niva + "\r\n");
            }
c# class textbox bubble-sort
1个回答
0
投票

您定义了冒泡排序方法以接收

int[]
参数而不是
List<Salesperson>
。既然要传一个
List<Salesperson>
,就需要修改接收一个的方法

如果您想按

Niva
字段或
Sold
字段排序,我不清楚,但您可以在下面的示例中轻松更改(使用
Sold
):

void BubbelSort(List<Salesperson> salespeople)
{
    for (int i = 0; i < salespeople.Count - 1; i++)
    {
        for (int j = 0; j < salespeople.Count - 1 - i; j++)
        {
            if (salespeople[j].Sold > salespeople[j + 1].Sold)
            {
                Salesperson temp = salespeople[j + 1];
                salespeople[j + 1] = salespeople[j];
                salespeople[j] = temp;
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.