DINGA DINGA
article thumbnail
728x90

https://www.hackerrank.com/challenges/correctness-invariant/problem

 

Correctness and the Loop Invariant | HackerRank

How do you demonstrate the correctness of an algorithm? You can use the loop invariant.

www.hackerrank.com

Algorithms > Sorting

 

배열을 정렬하는 함수의 잘못된 코드가 주어지면 올바르게 동작하도록 수정한다.

 

 

코드

void insertionSort(int N, int arr[]) {
    int i,j;
    int value;
    for(i=1;i<N;i++)
    {
        value=arr[i];
        j=i-1;
        while(j>=0 && value<arr[j])
        {
            arr[j+1]=arr[j];
            j=j-1;
        }
        arr[j+1]=value;
    }
    for(j=0;j<N;j++)
    {
        printf("%d",arr[j]);
        printf(" ");
    }
}

 

설명

첫 번째 for문에서 배열을 정렬하고, 두 번째 for문에서 배열의 원소들을 출력한다.

먼저, 배열의 i번째 값을 기준으로 잡고 해당 인덱스 이전의 값들과 비교한다.

만약 기준이 되는 값이 그 앞에 위치한 값보다 작으면 앞에 위치한 값을 뒤로 이동시킨다.

이 과정을 반복하여 정렬이 완료되면 정렬된 배열의 원소들을 차례로 출력한다.

 

728x90

'C & C++ > HackerRank' 카테고리의 다른 글

[HackerRank] Closest Numbers  (0) 2021.11.21
[HackerRank] Designer PDF Viewer  (0) 2021.11.05
[HackerRank] Birthday Cake Candles  (1) 2021.10.09
[HackerRank] Counting Sort 2  (0) 2021.10.09
[HackerRank] Diagonal Difference  (0) 2021.10.02