반응형
문자열 정렬하기 ( 버블소트 )
예제는 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]값이 가는 원리이다.
}
}
}
이렇게 정렬하고 나면 작은 수부터 큰 수까지 차례(오름차순)으로 정렬되어있게 된다.
반응형
'코오딩 > _배운거.' 카테고리의 다른 글
동적 메모리 할당_현재까지 내가 이해한 내용 (0) | 2020.03.22 |
---|---|
컴파일러 에러_꾸준히 업데이트중 (0) | 2020.03.09 |
fgets() 함수 (0) | 2020.03.06 |
이중포인터 개념정리. 미완. (0) | 2020.03.02 |
아스키코드표/ASCII TABLE 10진 16진 문자 (0) | 2020.02.18 |