상세 컨텐츠

본문 제목

삽입 정렬

Algorithm

by 개복신 개발자 2022. 10. 26. 05:03

본문

728x90
반응형

왼쪽은 정렬된 숫자들 오른쪽은 비정렬 숫자들

오른쪽에서 숫자들을 확인하고 왼쪽의 알맞은 자리에 해당 숫자를 삽입한다.

삽입 정렬= 삽입한다! 무엇을? 한개씩 순차적으로 고른 숫자(오른쪽에서)

 

#include <iostream>
using namespace std;

int main() {
    int arr_len;
    cin >> arr_len;
    int arr[arr_len];
    int j;
    for(int k=0; k<arr_len;k++) {
        cin >> arr[k];
    }
    for(int i=1; i<arr_len;i++){
        int tmp = arr[i];
        for(j=i-1; j>=0; j--){
            if(arr[j]>tmp) arr[j+1] = arr[j];
            else break;
        }
        arr[j+1] = tmp;
    }

    for(int i=0; i<arr_len ; i++) {
        cout << arr[i] << " " ;
    }
}

i=1에서부터

why?

j가 탐색해야 하기 때문이다

j는 i보다 작고 만약 i번째 수보다 j번째 수가 크면 알맞게 삽입하고 그 반대의 경우면 가만히 있는다.

이 아이디어에서 기반

 

-a[ j ]가 tmp( i 번째 숫자(j<i))보다 크면 안되기 때문에

a[j+1] = a[j]로 바꾼다.

이 반복문을 수행하고 가장 마지막으로 바뀐 자리에 tmp를 삽입한다.

반응형

'Algorithm' 카테고리의 다른 글

버블 정렬  (0) 2022.10.26
시간 복잡도 계산(이해하기 쉬운)  (0) 2022.10.25
선택정렬  (0) 2022.10.25
동적 계획법  (0) 2022.10.25

관련글 더보기

댓글 영역