0
-Add
5
-Add
9
-Add
6
-Add
8
При нажатии на кнопку Sort By Fastest, числа должны отсортироваться от меньшего до большего и вывести ответ:
0
5
6
8
9
Это примерные числа, которые задает юзер. Проблема в том, что я не знаю как сделать так, чтобы числа записывались в массив, а потом в таком же - уже посчитаном порядке выводились в листБокс.
Мой код:
- Код: Выделить всё
Partial Public Class _Default
Inherits System.Web.UI.Page
Private min As Integer
Private max As Integer
Private values() As Integer
Private Const max_val As Integer = 50
Private i As Integer
Private counter As Integer
Public Sub FastestSort(ByVal List() As Integer, ByVal min As Integer, ByVal max As Integer)
'ByVal List() As Integer,
Dim random_number As New Random
Dim avg As Integer
'Dim i As Integer
Dim low As Integer
Dim high As Integer
'if minimum is >= max, then there is nothing to sort
If min >= max Then
Exit Sub
End If
' randomize i to select a random number as a starter and use it as a divider
i = Int((max - min + 1) * Rnd() + min)
avg = List(i)
' Swap it to the front.
List(i) = List(min)
low = min
high = max
Do
' Look down from hi for a value < med_value.
Do While List(high) >= avg
high = high - 1
If high <= low Then Exit Do
Loop
If high <= low Then
List(low) = avg
Exit Do
End If
' Swap the lo and hi values.
List(low) = List(high)
' increase the lowest number to look for the next one, while it's lower than average
' keep increasing till we got it
low = low + 1
Do While List(low) < avg
low = low + 1
If low >= high Then Exit Do
Loop
If low >= high Then
low = high
List(high) = avg
Exit Do
End If
' Swap the low and high values.
List(high) = List(low)
Loop
For j As Integer = 0 To counter
FastestSort(List, min, low - 1)
FastestSort(List, low + 1, max)
Next
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Protected Sub btnAdd_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAdd.Click
Dim lapTime As Integer
Dim lapNum As Integer
Integer.TryParse(txtLapNum.Text, lapNum)
Integer.TryParse(txtLapTime.Text, lapTime)
'each time we click, we add time to the list
lbList.Items.Add(lapTime)
List(i) = txtLapTime.Text
End Sub
Protected Sub btnFastest_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnFastest.Click
Dim i As Integer
Dim txt As String
' pass the parameters
FastestSort(values, 0, max_val)
End Sub
End Class
Идея состоит в том, что главное это использование алгоритма, сделать это в ручную, а не через .Sort()
Пожалуйста помогите. Другие предложения тоже принимаются о том, как это можно сделать. Мне не смогли помочь на других форумах. Все что я хочу это код. О том, каким способом сделать, а не то что надо бы сделать. То, что я хочу от программы я и сама знаю.
Заранее спасибо.