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

[­ì³Ð] §Ö³t´¡¤J±Æ§Ç

[­ì³Ð] §Ö³t´¡¤J±Æ§Ç

±Æ§Ç°}¦C¡G10000 x 2 ªº¾ã¼Æ¡]¦ý§Úªº¤Þ¼Æ¥N½X¬OVariant¡^
¡]­«½Æ¼Æ¦r¤j·§¦b5~20­Ó¤§¶¡¡^
°õ¦æ100¦¸¬í¼ÆÁ`¦X¡G

¤@ºû­«½Æ¶¶§Ç¡]«Dí¡^        3.296
¤@ºû­«½Æ°f§Ç¡]«Dí¡^        3.641
¤@ºû­«½Æ¶Ã§Ç¡]«Dí¡^        5.499
¤@ºû¤£­«½Æ¶¶§Ç¡]«Dí¡^        2.814
¤@ºû¤£­«½Æ°f§Ç¡]«Dí¡^        3.166
¤@ºû¤£­«½Æ¶Ã§Ç¡]«Dí¡^        6.153
¤@ºû­«½Æ¶¶§Ç¡]í©w¡^        4.687
¤@ºû­«½Æ°f§Ç¡]í©w¡^        4.876
¤@ºû­«½Æ¶Ã§Ç¡]í©w¡^        5.479
¤@ºû¤£­«½Æ¶¶§Ç¡]í©w¡^        6.56
¤@ºû¤£­«½Æ°f§Ç¡]í©w¡^        8.148
¤@ºû¤£­«½Æ¶Ã§Ç¡]í©w¡^        9.1
¤Gºû­«½Æ¶¶§Ç¡]í©w¡^        5.176
¤Gºû­«½Æ°f§Ç¡]í©w¡^        5.517
¤Gºû­«½Æ¶Ã§Ç¡]í©w¡^        5.89
¤Gºû¤£­«½Æ¶¶§Ç¡]í©w¡^        7.598
¤Gºû¤£­«½Æ°f§Ç¡]í©w¡^        9.238
¤Gºû¤£­«½Æ¶Ã§Ç¡]í©w¡^        9.462
  1. Option Explicit
  2. Option Base 1
  3. Option Compare Text

  4. Public Sub S_¤@ºû°}¦C§Ö³t´¡¤J±Æ§Ç_01(ByRef ­ì©l¤@ºû°}¦C As Variant, ByVal °_­­ As Long, ByVal ¨´­­ As Long, ByVal »¼¼W©Î»¼´î As String)

  5.     On Error Resume Next
  6.    
  7.     If °_­­ >= ¨´­­ Then
  8.         Exit Sub
  9.     End If
  10.    
  11.     '------------------------------------------------------
  12.    
  13.     Select Case »¼¼W©Î»¼´î
  14.         Case "»¼¼W"
  15.             ¤@ºû°}¦C§Ö³t´¡¤J»¼¼W±Æ§Ç ­ì©l¤@ºû°}¦C, °_­­, ¨´­­
  16.         Case "»¼´î"
  17.             ¤@ºû°}¦C§Ö³t´¡¤J»¼´î±Æ§Ç ­ì©l¤@ºû°}¦C, °_­­, ¨´­­
  18.     End Select

  19. End Sub

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

  21.     On Error Resume Next
  22.    
  23.     If °_­­ >= ¨´­­ Then
  24.         Exit Sub
  25.     End If
  26.    
  27.     '------------------------------------------------------
  28.    
  29.     Dim X As Long
  30.     Dim Y As Long
  31.     Dim S As Long
  32.     Dim E As Long
  33.    
  34.     Dim ¼È¦s As Variant
  35.     Dim °ò·Ç As Variant
  36.    
  37.     '------------------------------------------------------
  38.    
  39.     If ¨´­­ - °_­­ < 16 Then
  40.         For X = °_­­ + 1 To ¨´­­
  41.             ¼È¦s = ­ì©l¤@ºû°}¦C(X)
  42.             
  43.             For Y = X - 1 To °_­­ Step -1
  44.                 If ¼È¦s >= ­ì©l¤@ºû°}¦C(Y) Then
  45.                     Exit For
  46.                 End If
  47.                
  48.                 ­ì©l¤@ºû°}¦C(Y + 1) = ­ì©l¤@ºû°}¦C(Y)
  49.             Next Y
  50.             
  51.             ­ì©l¤@ºû°}¦C(Y + 1) = ¼È¦s
  52.         Next X
  53.     Else
  54.         Dim °ò·Ç°}¦C(3) As Variant
  55.         
  56.         °ò·Ç°}¦C(1) = ­ì©l¤@ºû°}¦C(°_­­)
  57.         °ò·Ç°}¦C(2) = ­ì©l¤@ºû°}¦C((°_­­ + ¨´­­) \ 2)
  58.         °ò·Ç°}¦C(3) = ­ì©l¤@ºû°}¦C(¨´­­)
  59.         
  60.         For X = 2 To 3
  61.             ¼È¦s = °ò·Ç°}¦C(X)
  62.             
  63.             For Y = X - 1 To 1 Step -1
  64.                 If ¼È¦s >= °ò·Ç°}¦C(Y) Then
  65.                     Exit For
  66.                 End If
  67.                
  68.                 °ò·Ç°}¦C(Y + 1) = °ò·Ç°}¦C(Y)
  69.             Next Y
  70.             
  71.             °ò·Ç°}¦C(Y + 1) = ¼È¦s
  72.         Next X
  73.         
  74.         °ò·Ç = °ò·Ç°}¦C(2)
  75.         
  76.         '------------------------------------------------------
  77.         
  78.         S = °_­­ - 1
  79.         E = ¨´­­ + 1
  80.         Do
  81.             Do
  82.                 S = S + 1
  83.                
  84.                 If ­ì©l¤@ºû°}¦C(S) >= °ò·Ç Then
  85.                     Exit Do
  86.                 End If
  87.             Loop
  88.             
  89.             Do
  90.                 E = E - 1
  91.                
  92.                 If ­ì©l¤@ºû°}¦C(E) <= °ò·Ç Then
  93.                     Exit Do
  94.                 End If
  95.             Loop
  96.             
  97.             If E <= S Then
  98.                 Exit Do
  99.             End If
  100.             
  101.             ¼È¦s = ­ì©l¤@ºû°}¦C(S)
  102.             ­ì©l¤@ºû°}¦C(S) = ­ì©l¤@ºû°}¦C(E)
  103.             ­ì©l¤@ºû°}¦C(E) = ¼È¦s
  104.         Loop
  105.         
  106.         '------------------------------------------------------
  107.         
  108.         If °_­­ < E And E < ¨´­­ Then
  109.             ¤@ºû°}¦C§Ö³t´¡¤J»¼¼W±Æ§Ç ­ì©l¤@ºû°}¦C, °_­­, E
  110.         End If
  111.         
  112.         If °_­­ < S And S < ¨´­­ Then
  113.             ¤@ºû°}¦C§Ö³t´¡¤J»¼¼W±Æ§Ç ­ì©l¤@ºû°}¦C, S, ¨´­­
  114.         End If
  115.     End If

  116. End Sub

  117. Public Sub ¤@ºû°}¦C§Ö³t´¡¤J»¼´î±Æ§Ç(ByRef ­ì©l¤@ºû°}¦C As Variant, ByVal °_­­ As Long, ByVal ¨´­­ As Long)

  118.     On Error Resume Next
  119.    
  120.     If °_­­ >= ¨´­­ Then
  121.         Exit Sub
  122.     End If
  123.    
  124.     '------------------------------------------------------
  125.    
  126.     Dim X As Long
  127.     Dim Y As Long
  128.     Dim S As Long
  129.     Dim E As Long
  130.    
  131.     Dim ¼È¦s As Variant
  132.     Dim °ò·Ç As Variant
  133.    
  134.     '------------------------------------------------------
  135.    
  136.     If ¨´­­ - °_­­ < 16 Then
  137.         For X = °_­­ + 1 To ¨´­­
  138.             ¼È¦s = ­ì©l¤@ºû°}¦C(X)
  139.             
  140.             For Y = X - 1 To °_­­ Step -1
  141.                 If ¼È¦s <= ­ì©l¤@ºû°}¦C(Y) Then
  142.                     Exit For
  143.                 End If
  144.                
  145.                 ­ì©l¤@ºû°}¦C(Y + 1) = ­ì©l¤@ºû°}¦C(Y)
  146.             Next Y
  147.             
  148.             ­ì©l¤@ºû°}¦C(Y + 1) = ¼È¦s
  149.         Next X
  150.     Else
  151.         Dim °ò·Ç°}¦C(3) As Variant
  152.         
  153.         °ò·Ç°}¦C(1) = ­ì©l¤@ºû°}¦C(°_­­)
  154.         °ò·Ç°}¦C(2) = ­ì©l¤@ºû°}¦C((°_­­ + ¨´­­) \ 2)
  155.         °ò·Ç°}¦C(3) = ­ì©l¤@ºû°}¦C(¨´­­)
  156.         
  157.         For X = 2 To 3
  158.             ¼È¦s = °ò·Ç°}¦C(X)
  159.             
  160.             For Y = X - 1 To 1 Step -1
  161.                 If ¼È¦s >= °ò·Ç°}¦C(Y) Then
  162.                     Exit For
  163.                 End If
  164.                
  165.                 °ò·Ç°}¦C(Y + 1) = °ò·Ç°}¦C(Y)
  166.             Next Y
  167.             
  168.             °ò·Ç°}¦C(Y + 1) = ¼È¦s
  169.         Next X
  170.         
  171.         °ò·Ç = °ò·Ç°}¦C(2)
  172.         
  173.         '------------------------------------------------------
  174.         
  175.         S = °_­­ - 1
  176.         E = ¨´­­ + 1
  177.         Do
  178.             Do
  179.                 S = S + 1
  180.                
  181.                 If ­ì©l¤@ºû°}¦C(S) <= °ò·Ç Then
  182.                     Exit Do
  183.                 End If
  184.             Loop
  185.             
  186.             Do
  187.                 E = E - 1
  188.                
  189.                 If ­ì©l¤@ºû°}¦C(E) >= °ò·Ç Then
  190.                     Exit Do
  191.                 End If
  192.             Loop
  193.             
  194.             If E <= S Then
  195.                 Exit Do
  196.             End If
  197.             
  198.             ¼È¦s = ­ì©l¤@ºû°}¦C(S)
  199.             ­ì©l¤@ºû°}¦C(S) = ­ì©l¤@ºû°}¦C(E)
  200.             ­ì©l¤@ºû°}¦C(E) = ¼È¦s
  201.         Loop
  202.         
  203.         '------------------------------------------------------
  204.         
  205.         If °_­­ < E And E < ¨´­­ Then
  206.             ¤@ºû°}¦C§Ö³t´¡¤J»¼´î±Æ§Ç ­ì©l¤@ºû°}¦C, °_­­, E
  207.         End If
  208.         
  209.         If °_­­ < S And S < ¨´­­ Then
  210.             ¤@ºû°}¦C§Ö³t´¡¤J»¼´î±Æ§Ç ­ì©l¤@ºû°}¦C, S, ¨´­­
  211.         End If
  212.     End If

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

  1. Option Explicit
  2. Option Base 1
  3. Option Compare Text

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

  5.     On Error Resume Next
  6.    
  7.     If °_­­ >= ¨´­­ Then
  8.         Exit Sub
  9.     End If
  10.    
  11.     '------------------------------------------------------
  12.    
  13.     Dim X As Long
  14.    
  15.     Dim ¯Á¤Þ°}¦C() As Long
  16.    
  17.     '------------------------------------------------------
  18.    
  19.     ReDim ¯Á¤Þ°}¦C(°_­­ To ¨´­­) As Long
  20.    
  21.     For X = °_­­ To ¨´­­
  22.         ¯Á¤Þ°}¦C(X) = X
  23.     Next X
  24.    
  25.     '------------------------------------------------------
  26.    
  27.     Select Case »¼¼W©Î»¼´î
  28.         Case "»¼¼W"
  29.             ¤@ºû°}¦C§Ö³t´¡¤Jí©w»¼¼W±Æ§Ç ­ì©l¤@ºû°}¦C, ¯Á¤Þ°}¦C, °_­­, ¨´­­
  30.         Case "»¼´î"
  31.             ¤@ºû°}¦C§Ö³t´¡¤Jí©w»¼´î±Æ§Ç ­ì©l¤@ºû°}¦C, ¯Á¤Þ°}¦C, °_­­, ¨´­­
  32.     End Select
  33.    
  34.     '------------------------------------------------------
  35.    
  36.     Dim ½Æ»s­ì©l¤@ºû°}¦C As Variant
  37.    
  38.     ½Æ»s­ì©l¤@ºû°}¦C = ­ì©l¤@ºû°}¦C
  39.    
  40.     For X = °_­­ To ¨´­­
  41.         ­ì©l¤@ºû°}¦C(X) = ½Æ»s­ì©l¤@ºû°}¦C(¯Á¤Þ°}¦C(X))
  42.     Next X

  43. End Sub

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

  45.     On Error Resume Next
  46.    
  47.     If °_­­ >= ¨´­­ Then
  48.         Exit Sub
  49.     End If
  50.    
  51.     '------------------------------------------------------
  52.    
  53.     Dim X As Long
  54.     Dim Y As Long
  55.    
  56.     Dim Â^¨ú¦¨¤@ºû°}¦C As Variant
  57.     Dim ¯Á¤Þ°}¦C() As Long
  58.    
  59.     '------------------------------------------------------
  60.    
  61.     ReDim Â^¨ú¦¨¤@ºû°}¦C(°_­­ To ¨´­­) As Variant
  62.     ReDim ¯Á¤Þ°}¦C(°_­­ To ¨´­­) As Long
  63.    
  64.     If ±Æ§Çºû«× = 1 Then
  65.         For X = °_­­ To ¨´­­
  66.             Â^¨ú¦¨¤@ºû°}¦C(X) = ­ì©l¤Gºû°}¦C(X, ±Æ§ÇÁä­È)
  67.             ¯Á¤Þ°}¦C(X) = X
  68.         Next X
  69.     Else
  70.         For Y = °_­­ To ¨´­­
  71.             Â^¨ú¦¨¤@ºû°}¦C(Y) = ­ì©l¤Gºû°}¦C(±Æ§ÇÁä­È, Y)
  72.             ¯Á¤Þ°}¦C(Y) = Y
  73.         Next Y
  74.     End If
  75.    
  76.     '------------------------------------------------------
  77.    
  78.     Select Case »¼¼W©Î»¼´î
  79.         Case "»¼¼W"
  80.             ¤@ºû°}¦C§Ö³t´¡¤Jí©w»¼¼W±Æ§Ç Â^¨ú¦¨¤@ºû°}¦C, ¯Á¤Þ°}¦C, °_­­, ¨´­­
  81.         Case "»¼´î"
  82.             ¤@ºû°}¦C§Ö³t´¡¤Jí©w»¼´î±Æ§Ç Â^¨ú¦¨¤@ºû°}¦C, ¯Á¤Þ°}¦C, °_­­, ¨´­­
  83.     End Select
  84.    
  85.     '------------------------------------------------------
  86.    
  87.     Dim ½Æ»s­ì©l¤Gºû°}¦C As Variant
  88.    
  89.     ½Æ»s­ì©l¤Gºû°}¦C = ­ì©l¤Gºû°}¦C
  90.    
  91.     If ±Æ§Çºû«× = 1 Then
  92.         For X = °_­­ To ¨´­­
  93.             For Y = LBound(­ì©l¤Gºû°}¦C, 2) To UBound(­ì©l¤Gºû°}¦C, 2)
  94.                 ­ì©l¤Gºû°}¦C(X, Y) = ½Æ»s­ì©l¤Gºû°}¦C(¯Á¤Þ°}¦C(X), Y)
  95.             Next Y
  96.         Next X
  97.     Else
  98.         For Y = °_­­ To ¨´­­
  99.             For X = LBound(­ì©l¤Gºû°}¦C, 1) To UBound(­ì©l¤Gºû°}¦C, 1)
  100.                 ­ì©l¤Gºû°}¦C(X, Y) = ½Æ»s­ì©l¤Gºû°}¦C(X, ¯Á¤Þ°}¦C(Y))
  101.             Next X
  102.         Next Y
  103.     End If

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

TOP

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

  2.     On Error Resume Next
  3.    
  4.     If °_­­ >= ¨´­­ Then
  5.         Exit Sub
  6.     End If
  7.    
  8.     '------------------------------------------------------
  9.    
  10.     Dim X As Long
  11.     Dim Y As Long
  12.     Dim S As Long
  13.     Dim M As Long
  14.     Dim E As Long
  15.     Dim N As Long
  16.    
  17.     Dim ¼È¦s As Variant
  18.     Dim ¯Á¤Þ¼È¦s As Long
  19.    
  20.     '------------------------------------------------------
  21.    
  22.     If ¨´­­ - °_­­ < 16 Then
  23.         Dim ÁÙ­ì°}¦C As Variant
  24.         
  25.         ReDim ÁÙ­ì°}¦C(°_­­ To ¨´­­) As Variant
  26.         
  27.         For X = °_­­ To ¨´­­
  28.             ÁÙ­ì°}¦C(X) = ­ì©l¤@ºû°}¦C(¯Á¤Þ°}¦C(X))
  29.         Next X
  30.         
  31.         For X = °_­­ + 1 To ¨´­­
  32.             ¼È¦s = ÁÙ­ì°}¦C(X)
  33.             ¯Á¤Þ¼È¦s = ¯Á¤Þ°}¦C(X)
  34.             
  35.             For Y = X - 1 To °_­­ Step -1
  36.                 If ¼È¦s >= ÁÙ­ì°}¦C(Y) Then
  37.                     Exit For
  38.                 End If
  39.                
  40.                 ÁÙ­ì°}¦C(Y + 1) = ÁÙ­ì°}¦C(Y)
  41.                 ¯Á¤Þ°}¦C(Y + 1) = ¯Á¤Þ°}¦C(Y)
  42.             Next Y
  43.             
  44.             ÁÙ­ì°}¦C(Y + 1) = ¼È¦s
  45.             ¯Á¤Þ°}¦C(Y + 1) = ¯Á¤Þ¼È¦s
  46.         Next X
  47.     Else
  48.         Dim °ò·Ç As Variant
  49.         Dim °ò·Ç°}¦C(3) As Variant
  50.         
  51.         °ò·Ç°}¦C(1) = ­ì©l¤@ºû°}¦C(¯Á¤Þ°}¦C(°_­­))
  52.         °ò·Ç°}¦C(2) = ­ì©l¤@ºû°}¦C(¯Á¤Þ°}¦C((°_­­ + ¨´­­) \ 2))
  53.         °ò·Ç°}¦C(3) = ­ì©l¤@ºû°}¦C(¯Á¤Þ°}¦C(¨´­­))
  54.         
  55.         For X = 2 To 3
  56.             ¼È¦s = °ò·Ç°}¦C(X)
  57.             
  58.             For Y = X - 1 To 1 Step -1
  59.                 If ¼È¦s >= °ò·Ç°}¦C(Y) Then
  60.                     Exit For
  61.                 End If
  62.                
  63.                 °ò·Ç°}¦C(Y + 1) = °ò·Ç°}¦C(Y)
  64.             Next Y
  65.             
  66.             °ò·Ç°}¦C(Y + 1) = ¼È¦s
  67.         Next X
  68.         
  69.         °ò·Ç = °ò·Ç°}¦C(2)
  70.         
  71.         '------------------------------------------------------
  72.         
  73.         Dim ¯Á¤Þ°_°}¦C() As Long
  74.         Dim ¯Á¤Þ°ò°}¦C() As Long
  75.         Dim ¯Á¤Þ¨´°}¦C() As Long
  76.         
  77.         ReDim ¯Á¤Þ°_°}¦C(¨´­­ - °_­­) As Long
  78.         ReDim ¯Á¤Þ°ò°}¦C(¨´­­ - °_­­ + 1) As Long
  79.         ReDim ¯Á¤Þ¨´°}¦C(¨´­­ - °_­­) As Long
  80.         
  81.         S = 0
  82.         M = 0
  83.         E = 0
  84.         For X = °_­­ To ¨´­­
  85.             ¯Á¤Þ¼È¦s = ¯Á¤Þ°}¦C(X)
  86.             ¼È¦s = ­ì©l¤@ºû°}¦C(¯Á¤Þ¼È¦s)
  87.             
  88.             If ¼È¦s = °ò·Ç Then
  89.                 M = M + 1
  90.                 ¯Á¤Þ°ò°}¦C(M) = ¯Á¤Þ¼È¦s
  91.             ElseIf ¼È¦s < °ò·Ç Then
  92.                 S = S + 1
  93.                 ¯Á¤Þ°_°}¦C(S) = ¯Á¤Þ¼È¦s
  94.             Else
  95.                 E = E + 1
  96.                 ¯Á¤Þ¨´°}¦C(E) = ¯Á¤Þ¼È¦s
  97.             End If
  98.         Next X
  99.         
  100.         '------------------------------------------------------
  101.         
  102.         If S > 1 Then
  103.             ¤@ºû°}¦C§Ö³t´¡¤Jí©w»¼¼W±Æ§Ç ­ì©l¤@ºû°}¦C, ¯Á¤Þ°_°}¦C, 1, S
  104.         End If
  105.         
  106.         If E > 1 Then
  107.             ¤@ºû°}¦C§Ö³t´¡¤Jí©w»¼¼W±Æ§Ç ­ì©l¤@ºû°}¦C, ¯Á¤Þ¨´°}¦C, 1, E
  108.         End If
  109.         
  110.         '------------------------------------------------------
  111.         
  112.         N = °_­­ - 1
  113.         For X = 1 To S
  114.             N = N + 1
  115.             ¯Á¤Þ°}¦C(N) = ¯Á¤Þ°_°}¦C(X)
  116.         Next X
  117.         
  118.         For X = 1 To M
  119.             N = N + 1
  120.             ¯Á¤Þ°}¦C(N) = ¯Á¤Þ°ò°}¦C(X)
  121.         Next X
  122.         
  123.         For X = 1 To E
  124.             N = N + 1
  125.             ¯Á¤Þ°}¦C(N) = ¯Á¤Þ¨´°}¦C(X)
  126.         Next X
  127.     End If

  128. End Sub

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

  130.     On Error Resume Next
  131.    
  132.     If °_­­ >= ¨´­­ Then
  133.         Exit Sub
  134.     End If
  135.    
  136.     '------------------------------------------------------
  137.    
  138.     Dim X As Long
  139.     Dim Y As Long
  140.     Dim S As Long
  141.     Dim M As Long
  142.     Dim E As Long
  143.     Dim N As Long
  144.    
  145.     Dim ¼È¦s As Variant
  146.     Dim ¯Á¤Þ¼È¦s As Long
  147.    
  148.     '------------------------------------------------------
  149.    
  150.     If ¨´­­ - °_­­ < 16 Then
  151.         Dim ÁÙ­ì°}¦C As Variant
  152.         
  153.         ReDim ÁÙ­ì°}¦C(°_­­ To ¨´­­) As Variant
  154.         
  155.         For X = °_­­ To ¨´­­
  156.             ÁÙ­ì°}¦C(X) = ­ì©l¤@ºû°}¦C(¯Á¤Þ°}¦C(X))
  157.         Next X
  158.         
  159.         For X = °_­­ + 1 To ¨´­­
  160.             ¼È¦s = ÁÙ­ì°}¦C(X)
  161.             ¯Á¤Þ¼È¦s = ¯Á¤Þ°}¦C(X)
  162.             
  163.             For Y = X - 1 To °_­­ Step -1
  164.                 If ¼È¦s <= ÁÙ­ì°}¦C(Y) Then
  165.                     Exit For
  166.                 End If
  167.                
  168.                 ÁÙ­ì°}¦C(Y + 1) = ÁÙ­ì°}¦C(Y)
  169.                 ¯Á¤Þ°}¦C(Y + 1) = ¯Á¤Þ°}¦C(Y)
  170.             Next Y
  171.             
  172.             ÁÙ­ì°}¦C(Y + 1) = ¼È¦s
  173.             ¯Á¤Þ°}¦C(Y + 1) = ¯Á¤Þ¼È¦s
  174.         Next X
  175.     Else
  176.         Dim °ò·Ç As Variant
  177.         Dim °ò·Ç°}¦C(3) As Variant
  178.         
  179.         °ò·Ç°}¦C(1) = ­ì©l¤@ºû°}¦C(¯Á¤Þ°}¦C(°_­­))
  180.         °ò·Ç°}¦C(2) = ­ì©l¤@ºû°}¦C(¯Á¤Þ°}¦C((°_­­ + ¨´­­) \ 2))
  181.         °ò·Ç°}¦C(3) = ­ì©l¤@ºû°}¦C(¯Á¤Þ°}¦C(¨´­­))
  182.         
  183.         For X = 2 To 3
  184.             ¼È¦s = °ò·Ç°}¦C(X)
  185.             
  186.             For Y = X - 1 To 1 Step -1
  187.                 If ¼È¦s >= °ò·Ç°}¦C(Y) Then
  188.                     Exit For
  189.                 End If
  190.                
  191.                 °ò·Ç°}¦C(Y + 1) = °ò·Ç°}¦C(Y)
  192.             Next Y
  193.             
  194.             °ò·Ç°}¦C(Y + 1) = ¼È¦s
  195.         Next X
  196.         
  197.         °ò·Ç = °ò·Ç°}¦C(2)
  198.         
  199.         '------------------------------------------------------
  200.         
  201.         Dim ¯Á¤Þ°_°}¦C() As Long
  202.         Dim ¯Á¤Þ°ò°}¦C() As Long
  203.         Dim ¯Á¤Þ¨´°}¦C() As Long
  204.         
  205.         ReDim ¯Á¤Þ°_°}¦C(¨´­­ - °_­­) As Long
  206.         ReDim ¯Á¤Þ°ò°}¦C(¨´­­ - °_­­ + 1) As Long
  207.         ReDim ¯Á¤Þ¨´°}¦C(¨´­­ - °_­­) As Long
  208.         
  209.         S = 0
  210.         M = 0
  211.         E = 0
  212.         For X = °_­­ To ¨´­­
  213.             ¯Á¤Þ¼È¦s = ¯Á¤Þ°}¦C(X)
  214.             ¼È¦s = ­ì©l¤@ºû°}¦C(¯Á¤Þ¼È¦s)
  215.             
  216.             If ¼È¦s = °ò·Ç Then
  217.                 M = M + 1
  218.                 ¯Á¤Þ°ò°}¦C(M) = ¯Á¤Þ¼È¦s
  219.             ElseIf ¼È¦s > °ò·Ç Then
  220.                 S = S + 1
  221.                 ¯Á¤Þ°_°}¦C(S) = ¯Á¤Þ¼È¦s
  222.             Else
  223.                 E = E + 1
  224.                 ¯Á¤Þ¨´°}¦C(E) = ¯Á¤Þ¼È¦s
  225.             End If
  226.         Next X
  227.         
  228.         '------------------------------------------------------
  229.         
  230.         If S > 1 Then
  231.             ¤@ºû°}¦C§Ö³t´¡¤Jí©w»¼´î±Æ§Ç ­ì©l¤@ºû°}¦C, ¯Á¤Þ°_°}¦C, 1, S
  232.         End If
  233.         
  234.         If E > 1 Then
  235.             ¤@ºû°}¦C§Ö³t´¡¤Jí©w»¼´î±Æ§Ç ­ì©l¤@ºû°}¦C, ¯Á¤Þ¨´°}¦C, 1, E
  236.         End If
  237.         
  238.         '------------------------------------------------------
  239.         
  240.         N = °_­­ - 1
  241.         For X = 1 To S
  242.             N = N + 1
  243.             ¯Á¤Þ°}¦C(N) = ¯Á¤Þ°_°}¦C(X)
  244.         Next X
  245.         
  246.         For X = 1 To M
  247.             N = N + 1
  248.             ¯Á¤Þ°}¦C(N) = ¯Á¤Þ°ò°}¦C(X)
  249.         Next X
  250.         
  251.         For X = 1 To E
  252.             N = N + 1
  253.             ¯Á¤Þ°}¦C(N) = ¯Á¤Þ¨´°}¦C(X)
  254.         Next X
  255.     End If

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

TOP

        ÀR«ä¦Û¦b : ¦³Ä@©ñ¦b¤ß¸Ì¡A¨S¦³¨­Åé¤O¦æ¡A¥¿¦p¯Ñ¥Ð¤£¼½ºØ¡A¬Ò¬OªÅ¹L¦]½t¡C
ªð¦^¦Cªí ¤W¤@¥DÃD