如何在 ListBox 中查找最小重复值的索引?

Posted

技术标签:

【中文标题】如何在 ListBox 中查找最小重复值的索引?【英文标题】:How to find indexes of the most small duplicated value in a ListBox? 【发布时间】:2021-07-31 18:52:07 【问题描述】:

我尝试了所有我可以在网上找到的东西,并花了很多时间但我做不到。

这是一个带有ListBox 的表单,随机数从 20 到 30,我需要找到最小值并显示它的位置。困难的部分是,如果我有 2 个或 3 个相同数量的,那么我不知道该怎么做,我几乎尝试了所有方法。

这是我到目前为止所做的代码:

Random r = new Random();

int[] a;
private void button2_Click(object sender, EventArgs e)

    int i;
    a = new int[10];
   
    listBox1.Items.Clear();
    for (i = 0; i < 10; i++)
    
        a[i] = r.Next(20, 31);
        listBox1.Items.Add(a[i]);
    


private void button1_Click(object sender, EventArgs e)
 
    int[] b;
    b = new int[10];
    int mini=3435, i,index=0;
    b = (int[])a.Clone();
   
    for (i = 1; i < 10; i++)
    
        if (b[i] < mini)
        
            mini = b[i];
        
    
    
    index = Array.IndexOf(b, mini);
    label2.Text = Convert.ToString("la pozitia: " + index);
    

    label1.Text = Convert.ToString("Minimul este: " +mini );
   

它应该是这样的:

【问题讨论】:

“困难的部分是,如果我有 2 个或 3 个相同数量的,那么我不知道该怎么做” 那个业务逻辑。 IE。如何做到这一点没有一般规则。这取决于您的业务案例。如果有多个匹配项,您想做什么? 您可以添加频率列 你可以使用 Linq 吗? 我不允许使用 Linq , JHBonarius for (i = 1; i &lt; 10; i++) 不好。首先:这不是 C,所以你可以在你使用它们的地方声明对象(甚至在 C 中你会写 for (int i=0; ...)。接下来,在 C# 和类似语言中,索引是从零开始的。即for (int i=0; i &lt; b.Length; i++)。(或者你可以设置int mini=b[0];,这也可以) 【参考方案1】:

由于您只想将位置输出为逗号分隔列表,因此您可以为匹配的位置列表使用单独的字符串:

int[] b;
b = new int[10];
int mini = int.MaxValue, i, index = 0;
string miniList = "";
b = (int[])a.Clone();

for (i = 0; i < 10; i++)

    if (b[i] < mini)
    
        mini = b[i];
        miniList = "";
    
    if (b[i] == mini)
    
        if (!string.IsNullOrEmpty(miniList))
        
            miniList += ", ";
        
        miniList += i;
    


label1.Text = Convert.ToString("Minimul este: " + mini);
label2.Text = Convert.ToString("la pozitia: " + miniList);

注意:我还将 mini 值设置为 int.MaxValue 开头,因此代码应该适用于任何数字范围

【讨论】:

完美运行,非常感谢!你为我的生命节省了至少 4 个小时 克隆a到b没用,a可以直接用,不是吗? 我想知道 op 是否真的学到了什么 ?? ps 新的 b[10] 甚至 a.clone 并没有增加太多。你可以只使用一个。 @Oliver Rogier 我认为它可以直接使用,但我们的老师希望我们这样做。

以上是关于如何在 ListBox 中查找最小重复值的索引?的主要内容,如果未能解决你的问题,请参考以下文章

Python:在 List 或 numpy.ndarry 中查找最大的 Top-n 值的索引 [重复]

如何遍历列表并检索最小值的索引但忽略输出列表中的重复项?

在Python中查找给定数组中最小值的索引

在javascript中的数组中查找多个最小值的索引

我是不是在查找数组中最小值的索引时引用或实例错误?

如何找到int数组Python的最小值和最大值的索引[重复]