在经典ASP中对时间数组进行排序

编程入门 行业动态 更新时间:2024-10-25 06:24:04
本文介绍了在经典ASP中对时间数组进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

必须回到我在Classic ASP中构建的旧应用程序中,并进行一些更改,但是有一点让我感到困惑.

had to return to a old app I had build in Classic ASP and do a few changes, however one bit is stumping me.

我有一个字符串,例如:

I have a string such as:

theTimings = "12:00-14:30,18:00-22:30,07:30-10:30"

我正在使用

timingsArray=Split(theTimings,",")

但是我需要对该数组进行排序,以便最早出现在最早的时间,即

However I need to sort this Array so the earliest times appear first, i.e.

07:30-10:30,12:00-14:30,18:00-22:30

有人知道怎么做吗?

推荐答案

您要对数组排序,Classic VBScript ASP不提供该数组.因此,您有4个选择:使用JScript ,从.NET收集,将数组转换为词典并在那里排序或滚动自己的算法"(又名在网上找到一些东西).

You want to sort an array, Classic VBScript ASP does not offer that. So you got 4 options: Use JScript, gather from .NET, convert the array to a dictionary and sort there or "roll your own algorithm" (a.k.a. find something on the net).

对不起,我不知道哪一个是最佳或更快的,但是如果您使用VBScript,我建议您使用快速排序.这是它的实现,适用于我从某处:

Sorry, I don't know which one would be optimal or faster, but if you go with VBScript, I advise using quick sort. Here's an implementation of it that's applicable with strings that I've adapted from somewhere:

Dim prt prt = Array("this", "array", "organized", "is", "not") print_array(prt) arr_sort prt print_array(prt) Sub arr_sort (arr) Call QuickSort(arr, 0, ubound(arr, 1)) End Sub Sub SwapRows (ary,row1,row2) Dim tempvar tempvar = ary(row1) ary(row1) = ary(row2) ary(row2) = tempvar End Sub 'SwapRows Sub QuickSort (vec,loBound,hiBound) '==--------------------------------------------------------== '== Sort a 1 dimensional array == '== == '== This procedure is adapted from the algorithm given in: == '== ~ Data Abstractions & Structures using C++ by ~ == '== ~ Mark Headington and David Riley, pg. 586 ~ == '== Quicksort is the fastest array sorting routine For == '== unordered arrays. Its big O is n log n == '== == '== Parameters: == '== vec - array to be sorted == '== loBound and hiBound are simply the upper and lower == '== bounds of the array's 1st dimension. It's probably == '== easiest to use the LBound and UBound functions to == '== Set these. == '==--------------------------------------------------------== Dim pivot,loSwap,hiSwap,temp,counter '== Two items to sort if hiBound - loBound = 1 then if vec(loBound) > vec(hiBound) then Call SwapRows(vec,hiBound,loBound) End If End If '== Three or more items to sort pivot = vec(int((loBound + hiBound) / 2)) vec(int((loBound + hiBound) / 2)) = vec(loBound) vec(loBound) = pivot loSwap = loBound + 1 hiSwap = hiBound Do '== Find the right loSwap while loSwap < hiSwap and vec(loSwap) <= pivot loSwap = loSwap + 1 wend '== Find the right hiSwap while vec(hiSwap) > pivot hiSwap = hiSwap - 1 wend '== Swap values if loSwap is less then hiSwap if loSwap < hiSwap then Call SwapRows(vec,loSwap,hiSwap) Loop While loSwap < hiSwap vec(loBound) = vec(hiSwap) vec(hiSwap) = pivot '== Recursively call function .. the beauty of Quicksort '== 2 or more items in first section if loBound < (hiSwap - 1) then Call QuickSort(vec,loBound,hiSwap-1) '== 2 or more items in second section if hiSwap + 1 < hibound then Call QuickSort(vec,hiSwap+1,hiBound) End Sub 'QuickSort

另外,这是我的"print_array",我希望有朝一日能发展成一个可以正常使用的"print_r":

And as a bonus, this is my "print_array", which I want to evolve into a fully working "print_r" someday:

public sub print_array (var) call print_r_depth(var, 0) end sub public sub print_r_depth (var, depth) if depth=0 then response.write("<pre>" & Tab(depth)) response.write(typename(var)) end if if isarray(var) then response.write(Tab(depth) & " (<br />") dim x for x=0 to uBound(var) response.write(Tab(depth+1) & "("&x&")") call print_r_depth(var(x), depth+2) response.write("<br />") next response.write(Tab(depth) & ")") end if select case vartype(var) case VBEmpty: 'Uninitialized case VBNull: 'Contains no valid data case VBDataObject: 'Data access object case VBError: case VBArray: case VBObject: case VBVariant: case else: if vartype(var) < 16 then response.write(" => " & var) else response.write(" - vartype:" & vartype(var) & " depth:" & depth) end if end select if depth=0 then response.write("</pre>") end if end sub public function Tab (spaces) dim val, x val = "" for x=1 to spaces val=val & " " next Tab = val end function

更多推荐

在经典ASP中对时间数组进行排序

本文发布于:2023-10-24 09:43:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1523607.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   中对   时间   经典   ASP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!