当我尝试进行 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");
}
您定义了冒泡排序方法以接收
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;
}
}
}
}