ãƒãƒ–ルソートã¨ã¯ï¼Œåˆ—をソートã™ã‚‹ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã® 1 ã¤ã§ã‚る.長㕠N ã®æ•°åˆ— A ã‚’æ˜‡é †ã«ã‚½ãƒ¼ãƒˆã—ãŸã„ã¨ã—よã†ï¼Žãƒãƒ–ルソートã¯ï¼Œéš£ã‚Šåˆã† 2 ã¤ã®æ•°ã§å¤§å°é–¢ä¿‚ãŒå´©ã‚Œã¦ã„ã‚‹ã‚‚ã®ãŒã‚ã‚Œã°ï¼Œãれらã®ä½ç½®ã‚’交æ›ã™ã‚‹ï¼Žã“れを,数列をå‰ã‹ã‚‰é †ã«èµ°æŸ»ã—ãªãŒã‚‰è¡Œã†ï¼Žã™ãªã‚ã¡ï¼ŒAi > Ai+1 ã¨ãªã£ã¦ã„ã‚‹å ´æ‰€ãŒã‚ã‚Œã°ï¼Œãã® 2 数を交æ›ã™ã‚‹ã¨ã„ã†ã“ã¨ã‚’,i = 1, 2, ... , N − 1 ã«å¯¾ã—ã¦ã“ã®é †ã§è¡Œã†ã®ãŒ 1 回ã®èµ°æŸ»ã§ã‚る.ã“ã®èµ°æŸ»ã‚’ N − 1 回繰り返ã™ã“ã¨ã§ï¼Œæ•°åˆ—ã‚’æ˜‡é †ã«ã‚½ãƒ¼ãƒˆã§ãã‚‹ã“ã¨ãŒçŸ¥ã‚‰ã‚Œã¦ã„る.
数列 A ã®ãƒãƒ–ルソートã«ã‚ˆã‚‹äº¤æ›å›žæ•°ã¨ã¯ï¼Œæ•°åˆ— A ã«ä¸Šè¨˜ã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã‚’é©ç”¨ã—ãŸæ™‚ã«ï¼Œæ•´æ•°ã®äº¤æ›ãŒè¡Œã‚れる回数ã§ã‚る.(ãƒãƒ–ルソートã¨ã—ã¦çŸ¥ã‚‰ã‚Œã‚‹ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ åŠã³å®Ÿè£…ã«ã¯ï¼Œãƒ«ãƒ¼ãƒ—ã®é †ç•ªã‚„範囲,åŠã³çµ‚了æ¡ä»¶ãªã©ï¼Œç´°ã‹ãªå·®ç•°ãŒã‚ã‚‹å ´åˆãŒã‚る.ãŸã ã—,åŒã˜æ•°åˆ—ã«é©ç”¨ã—ãŸéš›ã®æ•´æ•°ã®äº¤æ›å›žæ•°ã¯ãれらã®å·®ç•°ã«ã‚ˆã‚Šå¤‰åŒ–ã—ãªã„ã“ã¨ãŒçŸ¥ã‚‰ã‚Œã¦ã„る.)
例ãˆã°ï¼Œä»¥ä¸‹ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã¯é•·ã• n ã®æ•´æ•°ã®é…列 a ã‚’ãƒãƒ–ルソートã«ã‚ˆã‚Šã‚½ãƒ¼ãƒˆã™ã‚‹é–¢æ•°ã‚’ C 言語ã§è¨˜è¿°ã—ãŸã‚‚ã®ã§ã‚る.
void bubble_sort(int *a, int n) { int i, j; for (i = 0; i < n - 1; ++i) { for (j = 0; j < n - 1; ++j) { if (a[j] > a[j + 1]) { /* 以下3 è¡ŒãŒ1 回ã®æ•´æ•°ã®äº¤æ›ã«ç›¸å½“*/ int x = a[j]; a[j] = a[j + 1]; a[j + 1] = x; } } } }
é•·ã• N ã®æ•°åˆ— A ãŒä¸Žãˆã‚‰ã‚Œã‚‹ï¼Žæ•°åˆ— A ã®ä»»æ„ã®å ´æ‰€ã® 2 ã¤ã®æ•´æ•°ã‚’ 1 回ã ã‘交æ›ã—ãŸæ•°åˆ— A' を作るã¨ã™ã‚‹ï¼Žæ•°åˆ— A' ã®ãƒãƒ–ルソートã«ã‚ˆã‚‹äº¤æ›å›žæ•°ã®æœ€å°å€¤ã‚’求ã‚るプãƒã‚°ãƒ©ãƒ を作æˆã›ã‚ˆï¼Žï¼ˆæœ€åˆã«äº¤æ›ã™ã‚‹2ã¤ã®æ•´æ•°ã¯å¿…ãšã—も隣りåˆã£ã¦ã„ã‚‹å¿…è¦ã¯ãªã„ã“ã¨ã«æ³¨æ„ã›ã‚ˆï¼Žï¼‰
標準入力ã‹ã‚‰ä»¥ä¸‹ã®ãƒ‡ãƒ¼ã‚¿ã‚’èªã¿è¾¼ã‚.
標準出力ã«ï¼Œæ•°åˆ— A' ã®ãƒãƒ–ルソートã«ã‚ˆã‚‹äº¤æ›å›žæ•°ã®æœ€å°å€¤ã‚’表ã™æ•´æ•°ã‚’ 1 è¡Œã§å‡ºåŠ›ã›ã‚ˆï¼Ž
5 10 3 6 8 1
0
数列 A ã®æœ€åˆã® 10 ã¨æœ€å¾Œã® 1 を交æ›ã™ã‚‹ã“ã¨ã«ã™ã‚‹ã¨ï¼Œæ•°åˆ— A' ã¯ã‚½ãƒ¼ãƒˆæ¸ˆã¿ã®åˆ—ã¨ãªã‚Šï¼Œãƒãƒ–ルソートã®äº¤æ›å›žæ•°ã¯ 0 ã¨ãªã‚‹ï¼Ž
5 3 1 7 9 5
2
数列 A ã® 3 番目㮠7 ã¨æœ€å¾Œã® 5 を交æ›ã™ã‚‹ã“ã¨ã§ï¼Œæ•°åˆ— A' 㯠3,1,5,9,7 ã¨ãªã‚‹ï¼ŽA' ã®ãƒãƒ–ルソートã«ã‚ˆã‚‹äº¤æ›å›žæ•°ã¯ 2 ã§ã‚る.
3 1 2 3
1
最åˆã‹ã‚‰æ•°åˆ— A ãŒã‚½ãƒ¼ãƒˆã•ã‚Œã¦ã„ã‚‹å ´åˆã§ã‚‚,数列 A' を作る際ã«äº¤æ›ã‚’è¡Œã‚ãªã‘ã‚Œã°ãªã‚‰ãªã„.
å•é¡Œæ–‡ã¨è‡ªå‹•å¯©åˆ¤ã«ä½¿ã‚れるデータã¯ã€æƒ…å ±ã‚ªãƒªãƒ³ãƒ”ãƒƒã‚¯æ—¥æœ¬å§”å“¡ä¼šãŒä½œæˆã—公開ã—ã¦ã„ã‚‹å•é¡Œæ–‡ã¨æŽ¡ç‚¹ç”¨ãƒ†ã‚¹ãƒˆãƒ‡ãƒ¼ã‚¿ã§ã™ã€‚