동빈나의 머지소트

 

#include <bits/stdc++.h>
using namespace std;

int number = 8;
int sorted[8]; //정렬 배열은 받드시 전역 배열

void merge(int a[], int m, int middle, int n){ //m : 시작점, middle : 중간점, n : 끝점

    int i = m;
    int j = middle+1;
    int k = m;

    //작은 순서대로 배열에 삽입
    while(i <= middle && j <= n){
        if(a[i] <= a[j]){
            sorted[k] = a[i];
            i++;
        }
        else{
            sorted[k] = a[j];
            j++;
        }
        k++;
    }
    if(i > middle){
        for(int t = j; t<=n; t++){
            sorted[k] = a[t];
            k++;
        }
    }
    else{
        for(int t=i; t<=middle; t++){
            sorted[k] = a[t];
            k++;
        }
    }

    //sorted 에서 a배열로 옮겨준다
    for(int t=m; t<=n; t++){
        a[t] = sorted[t];
    }
}

void mergesort(int a[], int m, int n){
    //크기가 1보다 큰 경우
    if(m < n){
        int middle = (m+n)/2;
        mergesort(a, m, middle);
        mergesort(a, middle+1, n);
        merge(a,m, middle, n);
    }
}

int main()
{
    int array[8] = {7,6,5,8,3,5,9,1};
    mergesort(array, 0, number-1);
    for(int t=0; t<number; t++){
        printf("%d ", array[t]);
    }
    return 0;
}

'정보올림피아드-KOI > 기초 문법 문제' 카테고리의 다른 글

문자열1 - 자가진단9  (0) 2022.01.19
함수3 - 자가진단3  (0) 2022.01.07
머지 정렬 Merge Sort  (0) 2021.12.31
quick sort (퀵정렬) - 내림차순  (0) 2021.12.31
함수3 - 형성평가6  (0) 2021.12.30

동빈나의 머지소트

 

#include <bits/stdc++.h>
using namespace std;

int number = 8;
int sorted[8]; //정렬 배열은 받드시 전역 배열

void merge(int a[], int m, int middle, int n){ //m : 시작점, middle : 중간점, n : 끝점

    int i = m;
    int j = middle+1;
    int k = m;

    //작은 순서대로 배열에 삽입
    while(i <= middle && j <= n){
        if(a[i] <= a[j]){
            sorted[k] = a[i];
            i++;
        }
        else{
            sorted[k] = a[j];
            j++;
        }
        k++;
    }
    if(i > middle){
        for(int t = j; t<=n; t++){
            sorted[k] = a[t];
            k++;
        }
    }
    else{
        for(int t=i; t<=middle; t++){
            sorted[k] = a[t];
            k++;
        }
    }

    //sorted 에서 a배열로 옮겨준다
    for(int t=m; t<=n; t++){
        a[t] = sorted[t];
    }
}

void mergesort(int a[], int m, int n){
    //크기가 1보다 큰 경우
    if(m < n){
        int middle = (m+n)/2;
        mergesort(a, m, middle);
        mergesort(a, middle+1, n);
        merge(a,m, middle, n);
    }
}

int main()
{
    int array[8] = {7,6,5,8,3,5,9,1};
    mergesort(array, 0, number-1);
    for(int t=0; t<number; t++){
        printf("%d ", array[t]);
    }
    return 0;
}

'정보올림피아드-KOI > 기초 문법 문제' 카테고리의 다른 글

함수3 - 자가진단3  (0) 2022.01.07
머지 정렬 Merge Sort  (0) 2021.12.31
quick sort (퀵정렬) - 내림차순  (0) 2021.12.31
함수3 - 형성평가6  (0) 2021.12.30
591 : 함수3 - 자가진단6  (0) 2021.12.30

 

http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=220&sca=10c0

 

JUNGOL | 함수2 - 자가진단5 > 문제은행

경기도 안양시 동안구 평촌대로 109 협성골드프라자 601호 TEL : 031-360-4144 FAX : 031-388-0996 E-mail : hancomc@hotmail.com, comkiwer@naver.com Copyrightⓒ 2010-2019 jungol. All right reserved. TOP

www.jungol.co.kr

 

 

#include <bits/stdc++.h>
using namespace std;
/*
583 : 함수2 - 자가진단5
세 개의 실수를 입력받아
가장 큰 수를 올림한 정수를 출력하고
가장 작은 수를 내림한 정수를 출력한 후
남은 수를 반올림한 정수를 출력하는 프로그램을 작성하시오.
입력되는 실수는 -1000이상 1000이하이다.
입력 예
3.45 51.48 -100.1
출력 예
52 -101 3
*/
bool comp(int a,int b){
     return a>b;
}

int main()
{
    float a[3];
    for(int i= 0;i<3;i++){
        scanf("%f",&a[i]);
    }
    float max,mid,min;

    sort(a, a+3,comp);

    max=a[0];
    mid=a[1];
    min=a[2];

    printf("%.2f %.2f %.2f",ceil(max),round(mid),floor(min));

    return 0;
}

'정보올림피아드-KOI > 기초 문법 문제' 카테고리의 다른 글

599 : 문자열1 - 자가진단7  (0) 2020.03.01
582 : 함수2 - 자가진단4  (0) 2020.03.01
584 : 함수2 - 자가진단6  (0) 2020.03.01
586 : 함수2 - 자가진단8  (0) 2020.03.01
233 : 함수3 - 형성평가3  (0) 2020.03.01

+ Recent posts