Home > How-To Library > Sorting

How to sort an array

**************************************************************** * © 2007 CodeItBetter http://www.codeitbetter.com * * This notice MUST stay intact for legal use * ****************************************************************
'Sorting is an operation that you often perform on arrays. As you probably know, 'there are dozens of different sort algorithms, each one with its strengths and 'weaknesses. I found that the Shell Sort algorithm works well in most cases, and 'I 've prepared a generic routine that sorts any one-dimensional array of a data 'type compatible with the Variant type, either in ascending or descending order: Public Sub ShellSortAny(arr As Variant, numEls As Long, descending As Boolean) Dim index As Long, index2 As Long, firstItem As Long Dim distance As Long, value As Variant ' Exit if it is not an array. If VarType(arr) < vbArray Then Exit Sub firstItem = LBound(arr) ' Find the best value for distance. Do distance = distance * 3 + 1 Loop Until distance > numEls ' Sort the array. Do distance = distance \ 3 For index = distance + firstItem To numEls + firstItem - 1 value = arr(index) index2 = index Do While (arr(index2 - distance) > value) Xor descending arr(index2) = arr(index2 - distance) index2 = index2 - distance If index2 - distance < firstItem Then Exit Do Loop arr(index2) = value Next Loop Until distance = 1 End Sub

If you would like to submit your code here please us. Do not forget to mention your name. We are always thankful to each and everyone of you who submitted their code here.