버블정렬 : 직전 값과 비교하면서 쌓아올린다.
int main(int argc, const char * argv[]) {
int N,i,j,tmp;
int arr[100];
scanf("%d",&N);
for(i = 0; i < N; i++){
scanf("%d",&arr[i]);
}
for(i = 0; i < N-1; i++){
for(j = 1; j < N-i; j++){
if(arr[j-1] > 0 && arr[j] < 0){
tmp = arr[j-1];
arr[j-1] = arr[j];
arr[j] = tmp;
}
}
}
for(i = 0; i < N; i++){
printf("%d ",arr[i]);
}
return 0;
}
- 값을 오른쪽으로 차곡차곡 옮겨나가는 특성을 이용하여 양수 값만을 오른쪽으로 차곡차곡 옮겨나가는 방식이다.
- 오름차순 || 내림차순 정렬이 아니기 때문에 if(arr[j-1] > 0 && arr[j] <0) 이라는 조건문으로만 수정해주면 된다.
https://www.inflearn.com/course/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98/dashboard
'기타등등 > 알고리즘 기록' 카테고리의 다른 글
[C++] 투포인터 알고리즘 (0) | 2021.07.28 |
---|---|
[C++] 삽입정렬 - Least Recently Used(카카오캐시 변형) (0) | 2021.07.27 |
[C++] 선택정렬 - 3등의 성적은? (0) | 2021.07.26 |
[C++]Jolly Jumper (0) | 2021.06.21 |
[C++] 연속부분 증가수열 (0) | 2021.06.21 |