1-2-2.¾ð¾îº° ¼Óµµ ºñ±³

¾ð¾î¸¶´Ù Àå´ÜÁ¡ÀÌ ÀÖ´Ù. Àú±Þ ¾ð¾î´Â ÀÛ°í ºü¸£Áö¸¸ ³­À̵µ°¡ ³ô°í °í±Þ ¾ð¾î´Â ¾²±â´Â ÆíÇÏÁö¸¸ ¼º´É»óÀÇ ºÒÀÌÀÍÀÌ ÀÖ´Ù. Áß°£ Äڵ带 »ç¿ëÇÏ´Â ¾ð¾î´Â º»ÁúÀûÀ¸·Î ³×ÀÌƼºê ¾ð¾îº¸´Ù ´À¸± ¼ö¹Û¿¡ ¾ø´Âµ¥ °ú¿¬ ¾ó¸¶³ª Â÷À̳ª´ÂÁö Á÷Á¢ ½ÇÇèÇØ º¸ÀÚ. ´ÙÀ½ ÄÚµå´Â 30¸¸°ÇÀÇ ¹«ÀÛÀ§ ÀÚ·á¿¡ ´ëÇØ »ðÀÔ Á¤·ÄÀ» ¼öÇàÇÑ´Ù. »ðÀÔ Á¤·ÄÀº ´Ü¼øÇÏÁö¸¸ ´À¸° ¾Ë°í¸®ÁòÀ̾ ¼º´ÉÀ» Å×½ºÆ®Çϱ⿡ ÀûÇÕÇÏ´Ù. ¶È°°Àº Äڵ带 °¢°¢ÀÇ ¾ð¾î·Î ¸¸µé¾î ºÃ´Âµ¥ ÄÚµå ÀÚü´Â Áß¿äÇÏÁö ¾Ê¾Æ ±»ÀÌ ºÐ¼®ÇÒ ÇÊ¿ä´Â ¾ø´Ù.

 

C

C#

#include <stdio.h>

#include <stdlib.h>

 

const int num = 300000;

int ar[num];

 

int main() {

      int i, j, temp;

 

      for (i = 0; i < num; i++) ar[i] = rand();

 

      for (i = 1; i < num; i++) {

             temp = ar[i];

             for (j = i; j > 0; j--) {

                   if (ar[j - 1] > temp) {

                         ar[j] = ar[j - 1];

                   } else {

                         break;

                   }

             }

             ar[j] = temp;

 

             if (i % 10000 == 0) printf("%d¹ø° Á¤·Ä Áß\n", i);

      }

}

using System;

 

class CSTest {

      static void Main() {

             const int num = 300000;

             int[] ar = new int[num];

             int i, j, temp;

             Random R = new Random();

             for (i = 0;i < num; i++) ar[i] = R.Next(65536);

 

             for (i = 1; i < num; i++) {

                   temp = ar[i];

                   for (j = i; j > 0; j--) {

                         if (ar[j - 1] > temp) {

                                ar[j] = ar[j - 1];

                         } else {

                                break;

                         }

                   }

                   ar[j] = temp;

 

                   if (i % 10000 == 0) Console.WriteLine("{0}¹ø° Á¤·Ä Áß", i);

             }

      }

}

Java

Python

class JavaTest {

      public static void main(String args[]) {

             final int num = 300000;

             int ar[]  = new int[num];

             int i, j, temp;

             for (i = 0;i < num; i++) ar[i] = (int) (Math.random() * 65536);

 

             for (i = 1;i < num; i++) {

                   temp = ar[i];

                   for (j = i;j > 0;j--) {

                         if (ar[j-1] > temp)       {

                                ar[j] = ar[j-1];

                         } else {

                                break;

                         }

                   }

                   ar[j] = temp;

                  

                   if (i % 10000 == 0) System.out.println(i + "¹ø° Á¤·Ä Áß");

             }

      }

}

import random

 

num = 300000

ar = []

for i in range(num):

    ar.append(random.randint(0,65536))

 

for i in range(1, num):

    temp = ar[i]

    j = i

    while j > 0:

        if ar[j-1] > temp:

            ar[j] = ar[j-1]

        else:

            break

        j = j - 1

    ar[j] = temp

   

    if i % 10000 == 0:

        print(i, "¹ø° Á¤·ÄÁß")

 

2008³â ÀÌ Ã¥ÀÇ ÃÊÆÇÀ» ¾µ ¶§ Âë¿¡ JDK´Â 6.0, C#Àº 3.5¿´°í ÄÄÇ»ÅÍ ¼º´Éµµ Áö±Ýº¸´Ù ÇöÀúÈ÷ ³·¾Ò´Ù. Áö±ÝÀº JDK 12, C# 8.0À¸·Î ¹öÀüÀÌ ³ô¾ÆÁ³°í ÄÄÇ»ÅÍ´Â i7-8700ÀÇ °í¼º´ÉÀÌ´Ù. Àý´ëÀûÀÎ ¼Óµµ´Â Å« Àǹ̰¡ ¾øÀ¸´Ï »ó´ëÀûÀÎ ºñ±³¸¸ ÇØ º¸ÀÚ.

 

¾ð¾î

C

C#

ÀÚ¹Ù

1Â÷(2008³â)

42ÃÊ

115ÃÊ

107ÃÊ

2Â÷(2019³â)

10ÃÊ

15ÃÊ

17ÃÊ

 

¿ª½Ã ³×ÀÌƼºê ¾ð¾îÀÎ C°¡ °¡Àå ºü¸£¸ç C#°ú ÀÚ¹Ù´Â µµÅ丮 Å°Àç±â ¼öÁØÀÌ´Ù. ¿¹Àü¿¡´Â C¿¡ ºñÇØ ´ë·« 2.5¹è Á¤µµ ´À·Á È®¿¬ÇÑ ¼ÓµµÂ÷¸¦ ü°¨ÇÒ ¼ö ÀÖ¾ú´Ù. 10³âÀÌ Áö³­ ÇöÀç´Â ÄÄÆÄÀÏ·¯ÀÇ ¼º´ÉÀÌ ³ô¾ÆÁö°í °íµµÀÇ ÃÖÀûÈ­¸¦ Àû¿ëÇÏ¿© 1.5¹è Á¤µµ¹Û¿¡ Â÷À̳ªÁö ¾Ê´Â´Ù.

Àç¹Ì»ï¾Æ ÀÎÅÍÇÁ¸®ÅÍ ¾ð¾îÀÎ ÆÄÀ̽ã(¹öÀü 3.7.2)À¸·Îµµ ½ÇÇàÇØ ºÃ´Âµ¥ 2½Ã°£ 23ºÐÀÌ °É·È´Ù. ¸í·É¾î¸¦ ¸¸³¯ ¶§¸¶´Ù Äڵ带 Çؼ®Çؼ­ ½ÇÇàÇÏ´Ï ´À¸± ¼ö¹Û¿¡ ¾ø´Ù. ÀÌ·± ´ë±Ô¸ðÀÇ ¹Ýº¹ ÀÛ¾÷Àº ½ºÅ©¸³Æ® ¾ð¾îÀÇ ¿ëµµ¿¡ ÀûÇÕÇÏÁö ¾Ê¾Æ °øÁ¤ÇÑ °ÔÀÓÀº ¾Æ´Ï´Ù. °úÇÐ, ȸ°è °°Àº º¹ÀâÇÑ °è»êÀ» ÇÏÁö ¾Ê´Â ÇÑ 1.5¹è Á¤µµÀÇ ¼Óµµ Â÷À̴ ü°¨Çϱ⠾î·Æ´Ù. ±×·¡ÇÈ È¯°æ¿¡¼­ ½ÇÇàµÇ´Â ÇÁ·Î±×·¥Àº ´ë±â½Ã°£ÀÌ ¸¹¾Æ ¼Óµµ°¡ Áß¿äÇÏÁö ¾ÊÀ¸¸ç µ¿¿µ»ó Àç»ý, ³×Æ®¿÷ Åë½Åó·³ Çϵå¿þ¾î¿¡ ÀÇÁ¸ÀûÀÎ ±â´ÉÀº ¾ð¾î¿Í ¹«°üÇÏ´Ù.