如何用ASp實現去掉三個最高分和三個最低分

來源:互聯網
上載者:User
今天又協助了一個網友,我的口號是"以協助別人為快樂!"

問題:用asp如何?去掉三個最高分和三個最低分?
解決思路:
1、將整個數組排序,刪除兩端的三個最大值和三個最小值(另一網友提出的!)
2、挑選出其中三個最大的數和三個最小的數,將其刪除!(我的思路!)

我覺得我的方法應該可行一些,因為要刪除的數只有三個最大,三個最小,沒有必要把所有的數都進行排序,特別是當資料很多時,將會浪費很多的資源!我寫的序如下:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<% 
dim Arr
Arr=array(91,39,46,24,14,56,31,32,56,89)

call DeleteMax(UBound(Arr),3)’刪除三個最大的數!
call GetBack()’每個數稱以-1,將最小的數變成最大的數!
call DeleteMax(UBound(Arr),3)’刪除稱以-1以後三個最大的數!
call GetBack()’還原每一個數
for kk= 0 to UBound(Arr)’輸出每一個數
    Response.Write(Arr(kk))
    Response.Write("<br>")
next
sub DeleteMax(Arr_total,willdelete)
for m= 1 to willdelete
    for i= 0 to Arr_total-m
        if Arr(i)>Arr(i+1) then 
            call swap(Arr(i),Arr(i+1))
        end if
    next
    ReDim Preserve Arr(Arr_total-m) 
next
end sub
sub swap(num_a,num_b)’交換兩個數
    x=num_a
    num_a=num_b
    num_b=x
end sub
sub GetBack()
for L=0 to UBound(Arr)
Arr(L)=Arr(L)*-1
next
end sub
%>其中有三個子程式:
1、DeleteMax(Arr_total,willdelete)
功能:刪除若干個最大的數,Arr_total:數組的最大可用下標,willdelete:將要刪除的最大數的個數。

2、swap(num_a,num_b)
功能:交換兩個數

3、GetBack()
功能:將數組的每個元素乘以-1,將最小的數變成最大的數!

助人心得:
實驗出了怎麼刪除一個數組元素!
巧妙應用redim和Preserve語句,如:
dim A()
 redim A(10)
 ’想刪除第六個元素A(5)
 for n= 5 to ubound(A)-1
 A(n)=A(n+1)
 next
 redim Preserve A(ubound(A)-1)以上的代碼,就能夠完成了,不信你試試...

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.