ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[­ì³Ð] §Ö³tí©w±Æ§Çªk´ú¸Õ

(1) ¥Î value ·|¤ñ¸û§Ö
(2) ·íªì¬O¦]¬°¦b§Aªº2ºûSub´ú AR2D( 1¸U , 300 ) ,¬Ý¤@¤U Ram ³Ì°ª®p¥i¥HÃz¨ì 600 MB, ¤~¥[¤W¥h
  ²{¦b Sub ¤w¸g§ï¦¨1ºû, »¼°j©Ò»Ý¶q¤j·§·|­°¬° 600 MB / 300 = 2 MB , ¥i¥H®³±¼ ReDim Preserve ·|¤ñ¸û§Ö  
(3)  UBound(­ì©l¤Gºû°}¦C, 2) ¤]¥ý¥N¤JÅܼƷ|¤ñ¸û§Ö, ¦ý³q±`µL·P

TOP

¦^´_ 11# jackyq


    ·PÁ«ü±Ð¡A¬Ý¨Ó§AÆZ±M·~ªº¡I

TOP

³Ì«áÀu¤Æ¡A±q­ì¥»ªº0.198¬í¡÷0.089¬í
  1. Option Explicit
  2. Option Base 1
  3. Option Compare Text

  4. Public Sub S_¤Gºû°}¦C§Ö³t´¡¤Jí©w»¼¼W±Æ§Ç_01(ByRef ­ì©l¤Gºû°}¦C As Variant, ByVal ±Æ§Çºû«× As Long, ByVal ±Æ§ÇÁä­È As Long, ByVal °_­­ As Long, ByVal ¨´­­ As Long)

  5.     On Error Resume Next
  6.    
  7.     If °_­­ >= ¨´­­ Then
  8.         Exit Sub
  9.     End If
  10.    
  11.     '------------------------------------------------------
  12.    
  13.     Dim X As Long
  14.     Dim Y As Long
  15.    
  16.     Dim Â^¨ú¦¨¤@ºû°}¦C As Variant
  17.     Dim ¯Á¤Þ°}¦C() As Long
  18.    
  19.     '------------------------------------------------------
  20.    
  21.     ReDim Â^¨ú¦¨¤@ºû°}¦C(°_­­ To ¨´­­) As Variant
  22.     ReDim ¯Á¤Þ°}¦C(°_­­ To ¨´­­) As Long
  23.    
  24.     If ±Æ§Çºû«× = 1 Then
  25.         For X = °_­­ To ¨´­­
  26.             Â^¨ú¦¨¤@ºû°}¦C(X) = ­ì©l¤Gºû°}¦C(X, ±Æ§ÇÁä­È)
  27.             ¯Á¤Þ°}¦C(X) = X
  28.         Next X
  29.     Else
  30.         For Y = °_­­ To ¨´­­
  31.             Â^¨ú¦¨¤@ºû°}¦C(Y) = ­ì©l¤Gºû°}¦C(±Æ§ÇÁä­È, Y)
  32.             ¯Á¤Þ°}¦C(Y) = Y
  33.         Next Y
  34.     End If
  35.    
  36.     '------------------------------------------------------
  37.    
  38.     ¤Gºû°}¦C§Ö³t´¡¤Jí©w»¼¼W±Æ§Ç Â^¨ú¦¨¤@ºû°}¦C, ¯Á¤Þ°}¦C, °_­­, ¨´­­
  39.    
  40.     '------------------------------------------------------
  41.    
  42.     Dim ½Æ»s­ì©l¤Gºû°}¦C As Variant
  43.    
  44.     ½Æ»s­ì©l¤Gºû°}¦C = ­ì©l¤Gºû°}¦C
  45.    
  46.     If ±Æ§Çºû«× = 1 Then
  47.         For X = °_­­ To ¨´­­
  48.             For Y = LBound(­ì©l¤Gºû°}¦C, 2) To UBound(­ì©l¤Gºû°}¦C, 2)
  49.                 ­ì©l¤Gºû°}¦C(X, Y) = ½Æ»s­ì©l¤Gºû°}¦C(¯Á¤Þ°}¦C(X), Y)
  50.             Next Y
  51.         Next X
  52.     Else
  53.         For Y = °_­­ To ¨´­­
  54.             For X = LBound(­ì©l¤Gºû°}¦C, 1) To UBound(­ì©l¤Gºû°}¦C, 1)
  55.                 ­ì©l¤Gºû°}¦C(X, Y) = ½Æ»s­ì©l¤Gºû°}¦C(X, ¯Á¤Þ°}¦C(Y))
  56.             Next X
  57.         Next Y
  58.     End If

  59. End Sub

  60. Public Sub ¤Gºû°}¦C§Ö³t´¡¤Jí©w»¼¼W±Æ§Ç(ByRef ­ì©l¤@ºû°}¦C As Variant, ByRef ¯Á¤Þ°}¦C() As Long, ByVal °_­­ As Long, ByVal ¨´­­ As Long)

  61.     On Error Resume Next
  62.    
  63.     If °_­­ >= ¨´­­ Then
  64.         Exit Sub
  65.     End If
  66.    
  67.     '------------------------------------------------------
  68.    
  69.     Dim X As Long
  70.     Dim Y As Long
  71.     Dim S As Long
  72.     Dim M As Long
  73.     Dim E As Long
  74.     Dim N As Long
  75.    
  76.     Dim ¼È¦s As Variant
  77.     Dim ¯Á¤Þ¼È¦s As Long
  78.     Dim °ò·Ç As Variant
  79.    
  80.     '------------------------------------------------------
  81.    
  82.     If ¨´­­ - °_­­ < 16 Then
  83.         For X = °_­­ + 1 To ¨´­­
  84.             ¼È¦s = ­ì©l¤@ºû°}¦C(X)
  85.             ¯Á¤Þ¼È¦s = ¯Á¤Þ°}¦C(X)
  86.             
  87.             For Y = X - 1 To °_­­ Step -1
  88.                 If ¼È¦s >= ­ì©l¤@ºû°}¦C(Y) Then
  89.                     Exit For
  90.                 End If
  91.                
  92.                 ­ì©l¤@ºû°}¦C(Y + 1) = ­ì©l¤@ºû°}¦C(Y)
  93.                 ¯Á¤Þ°}¦C(Y + 1) = ¯Á¤Þ°}¦C(Y)
  94.             Next Y
  95.             
  96.             ­ì©l¤@ºû°}¦C(Y + 1) = ¼È¦s
  97.             ¯Á¤Þ°}¦C(Y + 1) = ¯Á¤Þ¼È¦s
  98.         Next X
  99.     Else
  100.         Dim °ò·Ç°}¦C(3) As Variant
  101.         
  102.         °ò·Ç°}¦C(1) = ­ì©l¤@ºû°}¦C(°_­­)
  103.         °ò·Ç°}¦C(2) = ­ì©l¤@ºû°}¦C((°_­­ + ¨´­­) \ 2)
  104.         °ò·Ç°}¦C(3) = ­ì©l¤@ºû°}¦C(¨´­­)
  105.         
  106.         For X = 2 To 3
  107.             ¼È¦s = °ò·Ç°}¦C(X)
  108.             
  109.             For Y = X - 1 To 1 Step -1
  110.                 If ¼È¦s >= °ò·Ç°}¦C(Y) Then
  111.                     Exit For
  112.                 End If
  113.                
  114.                 °ò·Ç°}¦C(Y + 1) = °ò·Ç°}¦C(Y)
  115.             Next Y
  116.             
  117.             °ò·Ç°}¦C(Y + 1) = ¼È¦s
  118.         Next X
  119.         
  120.         °ò·Ç = °ò·Ç°}¦C(2)
  121.         
  122.         '------------------------------------------------------
  123.         
  124.         Dim °_°}¦C As Variant
  125.         Dim °ò°}¦C As Variant
  126.         Dim ¨´°}¦C As Variant
  127.         Dim ¯Á¤Þ°_°}¦C() As Long
  128.         Dim ¯Á¤Þ°ò°}¦C() As Long
  129.         Dim ¯Á¤Þ¨´°}¦C() As Long
  130.         
  131.         ReDim °_°}¦C(¨´­­ - °_­­) As Variant
  132.         ReDim °ò°}¦C(¨´­­ - °_­­ + 1) As Variant
  133.         ReDim ¨´°}¦C(¨´­­ - °_­­) As Variant
  134.         ReDim ¯Á¤Þ°_°}¦C(¨´­­ - °_­­) As Long
  135.         ReDim ¯Á¤Þ°ò°}¦C(¨´­­ - °_­­ + 1) As Long
  136.         ReDim ¯Á¤Þ¨´°}¦C(¨´­­ - °_­­) As Long
  137.         
  138.         S = 0
  139.         M = 0
  140.         E = 0
  141.         For X = °_­­ To ¨´­­
  142.             ¼È¦s = ­ì©l¤@ºû°}¦C(X)
  143.             ¯Á¤Þ¼È¦s = ¯Á¤Þ°}¦C(X)
  144.             
  145.             If ¼È¦s < °ò·Ç Then
  146.                 S = S + 1
  147.                 °_°}¦C(S) = ¼È¦s
  148.                 ¯Á¤Þ°_°}¦C(S) = ¯Á¤Þ¼È¦s
  149.             ElseIf ¼È¦s = °ò·Ç Then
  150.                 M = M + 1
  151.                 °ò°}¦C(M) = ¼È¦s
  152.                 ¯Á¤Þ°ò°}¦C(M) = ¯Á¤Þ¼È¦s
  153.             Else
  154.                 E = E + 1
  155.                 ¨´°}¦C(E) = ¼È¦s
  156.                 ¯Á¤Þ¨´°}¦C(E) = ¯Á¤Þ¼È¦s
  157.             End If
  158.         Next X
  159.         
  160.         '------------------------------------------------------
  161.         
  162.         If S > 1 Then
  163.             ¤Gºû°}¦C§Ö³t´¡¤Jí©w»¼¼W±Æ§Ç °_°}¦C, ¯Á¤Þ°_°}¦C, 1, S
  164.         End If
  165.         
  166.         If E > 1 Then
  167.             ¤Gºû°}¦C§Ö³t´¡¤Jí©w»¼¼W±Æ§Ç ¨´°}¦C, ¯Á¤Þ¨´°}¦C, 1, E
  168.         End If
  169.         
  170.         '------------------------------------------------------
  171.         
  172.         N = °_­­ - 1
  173.         For X = 1 To S
  174.             N = N + 1
  175.             ­ì©l¤@ºû°}¦C(N) = °_°}¦C(X)
  176.             ¯Á¤Þ°}¦C(N) = ¯Á¤Þ°_°}¦C(X)
  177.         Next X
  178.         
  179.         For X = 1 To M
  180.             N = N + 1
  181.             ­ì©l¤@ºû°}¦C(N) = °ò°}¦C(X)
  182.             ¯Á¤Þ°}¦C(N) = ¯Á¤Þ°ò°}¦C(X)
  183.         Next X
  184.         
  185.         For X = 1 To E
  186.             N = N + 1
  187.             ­ì©l¤@ºû°}¦C(N) = ¨´°}¦C(X)
  188.             ¯Á¤Þ°}¦C(N) = ¯Á¤Þ¨´°}¦C(X)
  189.         Next X
  190.     End If

  191. End Sub
½Æ»s¥N½X

TOP

        ÀR«ä¦Û¦b : ¡i¦æµ½­n¤Î®É¡j¦æµ½­n¤Î®É¡A¥\¼w­n«ùÄò¡C¦p¿N¶}¤ô¤@¯ë¡A¥¼¿N¶}¤§«e¤d¸U¤£­n°±º¶¤õ­Ô¡A§_«h­«¨Ó´N¤Ó¶O¨Æ¤F¡C
ªð¦^¦Cªí ¤W¤@¥DÃD