排序算法问题 - VB

时间:2015-06-22 04:36:25

标签: vb.net algorithm sorting

我一直在努力使用下面这个算法。它应该将从八个文本框输入的时间转换为数组(txtTD1等)。然后它对它们进行排序,并为每个分配一个数字等级,该等级显示给用户(在txtR1等中)。

app.use(express.static(__dirname + '/'));

它完美无缺,除非数组中有重复项。比方说,例如,输入的txtTD1.text和txtTD2.text都具有相同的值。在这种情况下,会发生以下情况:

txtTD1 | txtR1

10:10.10 | 2

10:10.10 |

30:30.30 | 4

20:20.20 | 3

因此,它跳过第一个位置,将第二个位置分配给重复值的第一个实例,然后跳过第二个实例。

我使用消息框作为测试排序算法是否正常工作的方法,并且每次它告诉我它是(即,10:10.10是第一个,第二个10:10.10是第二个 - 将他们更喜欢他们是第一个和下一个是第三个,但不完全确定如何做到这一点。)

因此'匹配'算法显然存在问题。我确定它与IF语句的使用有关,但我不确定使用什么其他控制结构来避免这个问题。

我会感激任何见解和帮助!

1 个答案:

答案 0 :(得分:0)

你的问题就在这里:

    If timeArr(i) = txtTD1.Text Then
        txtR1.Text = count
    ElseIf timeArr(i) = txtTD2.Text Then
        txtR2.Text = count
    ElseIf timeArr(i) = txtTD3.Text Then
    ...

请参阅:每当您查看从txtTD1txtTD8的文本框时 - 所以当其中两个具有相同的值时,您将在第一个文本框中停止两次(您正在使用{{毕竟1}}并且无论如何都会忽略第二个。

我能想到的最简单的事情就是检查文本框是否仍然是空的:

ElseIf

当然每个的文本框。

说明

如果你想更多的想法,你可以轻易地阻止这个丑陋的副本和粘贴事情发生......但这是另一个问题