버블 정렬 구현 C++, JS, PY

sunghoon·2025년 4월 2일
0

2.0 Glove Project

목록 보기
33/35

버블정렬
특징: 구현은 가장 쉬움. 하지만 비효율적.

개념

옆에 있는 것끼리 비교해서 큰 걸 뒤로 보내는 방식.

가장 큰 숫자가 점점 "거품처럼" 위로 올라감.

문제 - 알파벳 순 정렬

// 키 순서대로 정렬
#include <stdio.h>
#include <string.h>

void swap(char* a, char* b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

int main () 
{
    char str[] = "winapi";

    int len = strlen(str); // 6

    printf("정렬 전 문자열 : %s\n", str);
    for(int i = 0; i < len - 1; i++){
        for(int j = 0; j < len - i ; j++)
        {            
            if (str[j] > str[j + 1]) {
                // swap
                swap(&str[j], &str[j+1]);
            }
        }
        printf("%d Step: %s\n", i + 1, str);
    }

    // 정렬 후 aiinpw
    printf("정렬 후 문자열 : %s", str);

    return 0;
}

Python

arr = [8, 4, 6, 2, 9, 1]

print('정렬 전 문자열:', arr)

###정렬
size = len(arr)

for i in range(size - 1):
	for j in range(size - i - 1):
		if arr[j] > arr[j+1]:
			arr[j], arr[j+1] = arr[j+1], arr[j]
        

print('정렬 후 문자열:', arr)

문제 - 키 순서

문제: 학생 키 순서대로 정렬하기

C++


/*
아래의 입력값을 입력 받는다.
입력값 : 143 134 137 132 140 134
오름차순으로 버블 정렬
*/
#include <iostream>

using namespace std;

void Swap(int* a, int* b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

int main() {
    int getArr[6] = {0, 0, 0, 0, 0, 0};
    int size = sizeof(getArr) / sizeof(int);
    cout << size << endl;

    cout << "정수 6개를 입력하세요." << endl;
    
    for(int i = 0; i < size; i++) {
        cin >> getArr[i];
    }
    
    for(int i = 0; i < size - 1; i++) {
        for(int j = 0; j < size - i - 1; j++) {
            if(getArr[j] > getArr[j+1]) {
                Swap(&getArr[j], &getArr[j+1]);
            }
        }
        cout << i + 1 << endl;
        for(int j = 0; j < size; j++) {
            cout << getArr[j] << ", ";
        }
        cout << endl;
    }
}

Javascript


const readline = require('readline');
const rl = readline.createInterface({
    input:process.stdin,
    output:process.stdout,
})
let arr = ['N', 'N', 'N', 'N', 'N', 'N'];
let size = arr.length;

const Swap = function(arr, i, j) {
    let temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
}

rl.question('input 6 number use space between number : ', (data) => {
    arr = data.split(' ').map(Number);

    for(let i = 0; i < size; i++) {
        for(let j = 0; j < size - i; j++) {
            if(arr[j] > arr[j+1]) {
                Swap(arr, j, j+1)
            }
        }
        console.log(arr)
    }  

    rl.close();
})

Python

# 버블 정렬 파이썬 구현
arr = list(map(int, input('정수 6개 입력: ').split()))
size = len(arr)

for i in range(size - 1):
	for j in range(size - i - 1):
		if arr[j] > arr[j+1]:
			arr[j], arr[j+1] = arr[j+1], arr[j]
	print(arr)
profile
프라다 신은 빈지노와 쿠페를 타는 꿈을 꿨다.

0개의 댓글