Rapid Sorting Recursive Function Algorithm Use Stack Conversion to Non - intended Algebra Optical Algorithm Slow?

xiaoxiao2021-03-06  20

DIM Stacksize As Longdim Top As longconst lowPosition as integer = 0const highposition as integer = 1

Function QuickSortnonRecursion (Byref Listtosort () As Boolean Dim Stack (100, 2) As Long Dim Low As Long, Temphigh As Long :::::: LOW = (LBound) )): high = (Ubound (Listtosort)) Dim PlaceMeright As Long, ExchangeTemp As Long Stack: Stack (Top, HighPosition) = High While (TOP> = 0) PlaceMeright = Listtosort (Stack " , LowPosition) "Low = stack (top, lowposition) high = stack (top, highposition) Do do while (list, lowposition) PlaceMeright) stack (top, highposition) = stack (top, highposition) - 1 Loop if (stack (top, lowposition) <= stack (top, highposition)) THEN ExchangeTemp = ListtOSort (Stack (Top, LowPosition)) Listtosort (Stack (Top, LowPosition) = Listtosort (Stack (Top (Top (Top, HighPosition)) Listtosort (Stack (Top (Top (Top, HighPosition) = ExchangeTemp Stack (Top, LowPosition) = Stack (Top, LowPosition) 1 Stack (Top, HighPosition) = Stack (Top, HightPosition) - 1 End if loop while (stack, LowPosition) <= stack (top, highposition)) TemPhigh = stack (top, highposition) TOP = TOP - 1 IF (TEMPLOW Low) THEN TOP = TOP 1 Stack (Top, LowPosition) =

low stack (top, HighPosition) = tempHigh End If WendEnd FunctionFunction bubbleSort (ByRef listToSort () As Long) As Boolean Dim i As Long, j As Long, endOfList As Long, exchangeTemp As Long endOfList = UBound (listToSort) For i = LBound (listtosort) to endoflist for j = I to endoflist if (Listtosort (i)> listtosort (j)) THEN ExchangeTemp = Listtosort (i) Listtosort (i) = listtosort (j) Listtosort (j) = ExchangeTemp end if next j Next iEnd FunctionPrivate Sub Class_Initialize () stackSize = 90: top = 0 End subFunction quickSortRecursion (ByRef listToSort () As Long, ByVal First As Long, ByVal Last As Long) As Boolean Dim low As Long, high As Long, placeMeRight As Long, exchangeTemp As long low = first: high = last placemeright = listtosort (low) do do while (listtosort (low) placeMeRight) high = high - 1 Loop If (low <= high) Then exchangeTemp = listToSort (low) listToSort (low) = listToSort (high) listToSort (high) = exchangeTemp low = low 1 high = high - 1 end if loop while (low <= high) IF (first

END FUNCTION

转载请注明原文地址:https://www.9cbs.com/read-42907.html

New Post(0)