今天又帮助了一个网友,我的口号是"以帮助别人为快乐!"
问题:用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("
") 
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)以上的代码,就能够完成了,不信你试试...			
如何用ASp实现去掉三个最高分和三个最低分
                    80酷酷网    80kuku.com 
       
  
 
 
  
