기타등등/알고리즘 기록

[C++] 버블정렬 - Special Sort(구글 인터뷰)

CodeJB 2021. 7. 27. 17:56
버블정렬 : 직전 값과 비교하면서 쌓아올린다.

 

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