advertisement
The most convenience way to sort text in Visual Basic 2005
First of all I want to say that my English isn't that good so bare with me, ok? ;)
Now let's begin.
Sorting text... Most people will think this is quite ordinary, you write something and you click a button or call a procedure to sort a textbox/array or whatsoever.
No problem with the build-in procedures except that they sort text in a strange fashion. Let me illustrate with an example: if you have an array {1,10,2,33} then normally it will be sorted like this {1,10,2,33}. As you may notice this is all wrong.
Therefore a certain guy named Donald Shell invented an algorithm in 1959 to sort text in a 'correct' way. An implementation of this algorithm is the ShellSort Sub procedure. I will now give this procedure written in Visual Basic as this will be easy to understand for everyone. It can be compiled using the .NET or 2005 edition.
--------------------------------------------------------
Sub ShellSort(ByRef sort() As String, ByVal numofelements As Short, ByVal order As Integer)
'The ShellSort procedure sorts the elements of the array sort()
'in descending(=1) or ascending(=2) order
'and returns this array to the calling procedure
Dim temp As String
Dim i, j, span As Short
span = numofelements \ 2
Do While span > 0
For i = span To numofelements - 1
For j = (i - span + 1) To 1 Step -span
Select Case order
Case 1
'1 means descending
If sort(j) <= sort(j + span) Then Exit For
Case 2
'2 means ascending
If sort(j) >= sort(j + span) Then Exit For
End Select
temp = sort(j)
sort(j) = sort(j + span)
sort(j + span) = temp
Next j
Next i
span = span \ 2
Loop
End Sub
--------------------------------------------------------
I wasn't able to display this code with tabs and such although I did type it this way. Oh well, Visual Studio can structorize this code ;)
Please note how simple this procedure is, by changing <= into >= you simple reverse the sorting order (see the Select Case structure).
Now for the use. The variables itself tell the required input: ShellSort(<*array of type string with the elements you want to sort*>, <*number of lines*>, <*ascending or descending*>) => returns an array with the sorted elements.
This code can be used in combination of C# or C++ and of course VB. In theory with every .NET language ;)
This code is also avaible at the Code Bank (nicely structured ;), http://www.hellboundhackers.org/readcode.php?id=23). Some elements are imported form the book Microsoft Visual Basic 2005 Step by Step by Michael Halvorson.
I hope you all liked the article, it's my first one. Please post both negative as positive comment, we all learn from our mistakes ;)
- The_Cell
PS if someone could PM me how to structure code in articles ;) I know it's isn't very readable. Just take a look at the Code Bank.
Now let's begin.
Sorting text... Most people will think this is quite ordinary, you write something and you click a button or call a procedure to sort a textbox/array or whatsoever.
No problem with the build-in procedures except that they sort text in a strange fashion. Let me illustrate with an example: if you have an array {1,10,2,33} then normally it will be sorted like this {1,10,2,33}. As you may notice this is all wrong.
Therefore a certain guy named Donald Shell invented an algorithm in 1959 to sort text in a 'correct' way. An implementation of this algorithm is the ShellSort Sub procedure. I will now give this procedure written in Visual Basic as this will be easy to understand for everyone. It can be compiled using the .NET or 2005 edition.
--------------------------------------------------------
Sub ShellSort(ByRef sort() As String, ByVal numofelements As Short, ByVal order As Integer)
'The ShellSort procedure sorts the elements of the array sort()
'in descending(=1) or ascending(=2) order
'and returns this array to the calling procedure
Dim temp As String
Dim i, j, span As Short
span = numofelements \ 2
Do While span > 0
For i = span To numofelements - 1
For j = (i - span + 1) To 1 Step -span
Select Case order
Case 1
'1 means descending
If sort(j) <= sort(j + span) Then Exit For
Case 2
'2 means ascending
If sort(j) >= sort(j + span) Then Exit For
End Select
temp = sort(j)
sort(j) = sort(j + span)
sort(j + span) = temp
Next j
Next i
span = span \ 2
Loop
End Sub
--------------------------------------------------------
I wasn't able to display this code with tabs and such although I did type it this way. Oh well, Visual Studio can structorize this code ;)
Please note how simple this procedure is, by changing <= into >= you simple reverse the sorting order (see the Select Case structure).
Now for the use. The variables itself tell the required input: ShellSort(<*array of type string with the elements you want to sort*>, <*number of lines*>, <*ascending or descending*>) => returns an array with the sorted elements.
This code can be used in combination of C# or C++ and of course VB. In theory with every .NET language ;)
This code is also avaible at the Code Bank (nicely structured ;), http://www.hellboundhackers.org/readcode.php?id=23). Some elements are imported form the book Microsoft Visual Basic 2005 Step by Step by Michael Halvorson.
I hope you all liked the article, it's my first one. Please post both negative as positive comment, we all learn from our mistakes ;)
- The_Cell
PS if someone could PM me how to structure code in articles ;) I know it's isn't very readable. Just take a look at the Code Bank.

Main:
Posted by 