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.Date Time
8.Development
9.Event
10.File Directory
11.Generics
12.GUI
13.Internationalization I18N
14.Language Basics
15.LINQ
16.Network Remote
17.Reflection
18.Security
19.Thread
20.Windows Presentation Foundation
21.Windows System
22.XML
23.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
w_w___w___._java_2_s__.__c_om__ | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.