Home
Search
 
What's New
Index
Books
Links
Q & A
Newsletter
Banners
 
Feedback
Tip Jar
 
C# Helper...
 
XML RSS Feed
Follow VBHelper on Twitter
 
 
 
MSDN Visual Basic Community
 
 
 
 
 
TitleSort data and remove duplicates
DescriptionThis example shows how to sort data and remove duplicates in Visual Basic 6. It uses quicksort to sort the data and then scans through the results adding non-duplicated values to a result array.
Keywordsquicksort, sort, duplicates, remove duplicates, unique
CategoriesAlgorithms
 
Thanks to Kenneth Ives.

This program sorts a list using a standard quicksort algorithm. See the code for how the algorithm works.

Then if you have the Remove Dupes option selected, the program removes duplicates. It scans through the sorted array, comparing each item to the one before it. If the item is different, it copies the item into a new array.

 
Public Function RemoveDups(strings() As String) As String()
Dim old_i As Integer
Dim last_i As Integer
Dim result() As String

    ' Make the result array.
    ReDim result(1 To UBound(strings))

    ' Copy the first item into the result array.
    result(1) = strings(1)

    ' Copy the other items
    last_i = 1
    For old_i = 2 To UBound(strings)
        If result(last_i) <> strings(old_i) Then
            last_i = last_i + 1
            result(last_i) = strings(old_i)
        End If
    Next old_i

    ' Remove unused entries from the result array.
    ReDim Preserve result(1 To last_i)

    ' Return the result array.
    RemoveDups = result
End Function
 
Quicksort is a fine general purpose sorting algorithm. For different kinds of data, however, it may not be the fastest or the best. For example, it has trouble sorting lists that contain many duplicate values and the algorithm countingsort is much faster at sorting numeric data. For more information on other sorting algorithms, see my book Ready-to-Run Visual Basic Algorithms.

Note also that this program works with an array of strings, even when it is using numeric data. It would be faster using an array of Integers, although the difference for such a small example (only 1000 items) would be small.

 
 
Copyright © 1997-2010 Rocky Mountain Computer Consulting, Inc.   All rights reserved.
  Updated