Quick Sort Demo : Sort « Data Structure « VB.Net

Home
VB.Net
1.2D
2.Application
3.Class
4.Data Structure
5.Data Types
6.Database ADO.net
7.Development
8.Event
9.File Directory
10.Generics
11.GUI
12.Language Basics
13.LINQ
14.Network Remote
15.Security
16.Thread
17.Windows Presentation Foundation
18.Windows System
19.XML
20.XML LINQ
VB.Net Tutorial
VB.Net by API
VB.Net » Data Structure » SortScreenshots 
Quick Sort Demo
Quick Sort Demo

Imports System

Public Class MainClass
    Private Shared Values() As Integer
    Private Const NUM_VALUES As Integer = 99
    
    Shared Sub Main(ByVal args As String())
        Dim random_number As New Random
        Dim As Integer
        
        ReDim Values(NUM_VALUES)
        For i = To NUM_VALUES
            Values(i= random_number.Next(1001000)
            Console.WriteFormat$(Values(i)) " " )
        Next i

        Console.WriteLine"Sorted" )

        
        ' Sort the numbers.
        Quicksort(Values, 0, NUM_VALUES)
        For i = To NUM_VALUES
            Console.WriteFormat$(Values(i)) " " )
        Next i
        

    End Sub
    ' "Ready-to-Run Visual Basic Algorithms"
    ' (http://www.vb-helper.com/vba.htm).
    Shared Public Sub Quicksort(ByVal list() As Integer, ByVal min As Integer, ByVal max As Integer)
        Dim random_number As New Random
        Dim med_value As Integer
        Dim hi As Integer
        Dim lo As Integer
        Dim i As Integer

        ' If min >= max, the list contains 0 or 1 items so
        ' it is sorted.
        If min >= max Then Exit Sub

        ' Pick the dividing value.
        i = random_number.Next(min, max + 1)
        med_value = list(i)

        ' Swap it to the front.
        list(i) = list(min)

        lo = min
        hi = max
        Do
            ' Look down from hi for a value < med_value.
            Do While list(hi) >= med_value
                hi = hi - 1
                If hi <= lo Then Exit Do
            Loop
            If hi <= lo Then
                list(lo) = med_value
                Exit Do
            End If

            ' Swap the lo and hi values.
            list(lo) = list(hi)

            ' Look up from lo for a value >= med_value.
            lo = lo + 1
            Do While list(lo) < med_value
                lo = lo + 1
                If lo >= hi Then Exit Do
            Loop
            If lo >= hi Then
                lo = hi
                list(hi) = med_value
                Exit Do
            End If

            ' Swap the lo and hi values.
            list(hi) = list(lo)
        Loop

        ' Sort the two sublists.
        Quicksort(list, min, lo - 1)
        Quicksort(list, lo + 1, max)
    End Sub
    

End Class

           
       
Related examples in the same category
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.