본문 바로가기

코오딩/_배운거.

문자열 정렬하기(버블소트)

반응형

문자열 정렬하기 ( 버블소트 )

예제는 1181번 : 단어정렬 에서 퍼왔다. 저거 풀다가 생각나서 쓰러 온거임.

https://www.acmicpc.net/problem/1181


예제 입력 1

13

but

i

wont

hesitate

no

more

no

more

it

cannot

wait

im

yours

예제 출력 1

i

im

it

no

but

more

wait

wont

yours

cannot

hesitate


bubble sort 를 이용한 문자열 정렬 이 목표이지만 막 번호(*아스키코드) 가지고 정렬하기는 참 어렵고 불편하지 않은가. 그래서 번호를 줘서 이용하기로 했다. 어쨌든 번호를 먹여서 정렬을 해도 정렬 아닌가.

 

문자열은 arr, 문자열 길이는 arrlen 이라고 지정해두었다.

변수로 i , j , n = 모든 케이스(들어오는 변수의 수), temp = 버블소트용 임시값.(아래에서 설명)를 선언해두었다.

for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1-i;j++)
        {
            if (arrlen[j]>arrlen[j+1])
            {
                temp=arrlen[j];
                arrlen[j]=arrlen[j+1];
                arrlen[j+1]=temp;
            }
        }
    }

for(i=0;i<n-1;i++)

{

for(j=0;j<n-1-i;j++)

{

if (arrlen[j]>arrlen[j+1]) // arrlen[j]번째 값이랑 arrlen[j+1]번째 값을 비교해서 원본값이 더 클때는

{

temp=arrlen[j]; //임시값 temp에 저장해둔다음에

arrlen[j]=arrlen[j+1]; //j 에다 j+1 값을 덮어씌운 후

arrlen[j+1]=temp; //j+1 에 temp에 저장되어있는 원래 arrlen[j]값이 가는 원리이다.

}

}

}

 

이렇게 정렬하고 나면 작은 수부터 큰 수까지 차례(오름차순)으로 정렬되어있게 된다.

반응형